如果我有我的main()
函数创建一个文件:Go:将文件指针传递给另一个函数?
output, err := os.Create("D:\\output.txt")
,我想一切使用被放入该文件的程序打印另一个函数:
output.WriteString(str)
我怎么能传递一个指向该文件的指针,以便函数可以写入该文件? 此外,有没有其他方式我应该用一个字符串写入文件,或WriteString
是succicient?
谢谢!
如果我有我的main()
函数创建一个文件:Go:将文件指针传递给另一个函数?
output, err := os.Create("D:\\output.txt")
,我想一切使用被放入该文件的程序打印另一个函数:
output.WriteString(str)
我怎么能传递一个指向该文件的指针,以便函数可以写入该文件? 此外,有没有其他方式我应该用一个字符串写入文件,或WriteString
是succicient?
谢谢!
有你的函数需要指针作为使用*
类型修饰符的参数,只是通过你的文件对象,是因为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")
简单的定义,可以采取*File
指针作为自变量的函数:
func Write(output *os.File) {
(...)
}
Write(&output) //call function.
}
你也可能希望确保该文件正在使用中端关闭:
defer output.Close()
谢谢,但我不得不使用* os,File如下所述! – Gambit2007
对! :)我已经更正了我的答案,以备将来参考。 – Esse
使用接口如io.Writer
是去。 Go的许多类型仅通过使用Write
方法来完成io.Writer
。 os.File
是这些类型之一。
好的谢谢!我实际上甚至不需要使用&符号,因为os.Create已经返回了该变量的地址。另外,你知道我怎么能“打印”一个新的文件行?当我使用“\ n”时,它在控制台中效果很好,但是当我将它作为字符串输出到.txt文件时并不起作用 – Gambit2007
很好,你实际上在两个答案中都发现了错误:)它完全是目的完成,哈哈。开个玩笑,我要解决这个问题。此外,在Windows上,如果您希望文件在记事本中正确显示,您需要使用“\ r \ n”而不是“\ n” – SirDarius
哈哈哈太棒了!再次感谢! – Gambit2007