如果我在main()
函数中创建了一个文件:
output, err := os.Create("D:\\output.txt")
我希望程序中另一个函数打印的所有东西都放在该文件中:
output.WriteString(str)
我怎样才能传递指向该文件的指针,以便函数可以写入?
另外,我是否应该使用其他方法将字符串写入文件,或者WriteString
是否足够?
谢谢!
答案 0 :(得分:3)
让你的函数使用*
类型修饰符将指针作为参数,并且只是按原样传递文件对象,因为os.Create已经返回一个指针:
func WriteStringToFile(f *os.File) {
n, err := f.WriteString("foobar")
}
// ..
output, err := os.Create("D:\\output.txt")
WriteStringToFile(output)
另外,请注意,最好不要忽略错误。
将字符串写入文件可以通过几种不同的方式完成,特别是如果您想避免直接使用os.File
对象,并且只使用io.Writer接口。例如:
fmt.Fprint(output, "foo bar")
答案 1 :(得分:2)
只需定义一个可以将*File
指针作为参数的函数:
func Write(output *os.File) {
(...)
}
Write(&output) //call function.
}
您还可以使用以下方法确保文件最终关闭:
defer output.Close()
答案 2 :(得分:2)
使用诸如io.Writer
之类的界面是可行的方法。 Go中的许多类型仅通过io.Writer
方法实现Write
。 os.File
是其中一种类型。