Go:将文件指针传递给不同的函数?

时间:2016-04-08 22:09:26

标签: file go

如果我在main()函数中创建了一个文件:

output, err := os.Create("D:\\output.txt")

我希望程序中另一个函数打印的所有东西都放在该文件中:

output.WriteString(str)

我怎样才能传递指向该文件的指针,以便函数可以写入? 另外,我是否应该使用其他方法将字符串写入文件,或者WriteString是否足够?

谢谢!

3 个答案:

答案 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方法实现Writeos.File是其中一种类型。