File 如何将文件指针传递到其他函数

File 如何将文件指针传递到其他函数,file,go,File,Go,如果我在我的main()函数中创建了一个文件: output, err := os.Create("D:\\output.txt") 我希望程序中另一个函数打印的所有内容都使用以下方法放入该文件: output.WriteString(str) 我如何传递指向该文件的指针,以便函数可以写入该文件? 另外,是否有其他方法可以将字符串写入文件,或者WriteString成功了?让您的函数使用*类型修饰符将指针作为参数,然后只需按操作系统的原样传递文件对象。Create已返回指针: func Wr

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

output, err := os.Create("D:\\output.txt")
我希望程序中另一个函数打印的所有内容都使用以下方法放入该文件:

output.WriteString(str)
我如何传递指向该文件的指针,以便函数可以写入该文件?
另外,是否有其他方法可以将字符串写入文件,或者
WriteString
成功了?

让您的函数使用
*
类型修饰符将指针作为参数,然后只需按操作系统的原样传递文件对象。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")

只需定义一个可以将
*文件
指针作为参数的函数:

func Write(output *os.File) {
 (...)
}

Write(&output) //call function.
}

此外,您可能希望确保最终使用以下方法关闭文件:

defer output.Close()

使用诸如
io.Writer
之类的界面是一种方法。Go中的许多类型仅通过使用
Write
方法就可以实现
io.Writer
<代码>操作系统。文件就是其中之一。

谢谢,但我必须使用*os,文件如下所述!对!:)我已经更正了我的答案,以备将来参考。好的,谢谢!实际上我甚至不需要使用符号,因为os.Create已经返回了该变量的地址。另外,你知道我如何“打印”一个文件的新行吗?当我使用“\n”时,它在控制台中工作得很好,但当我将其作为字符串输出到.txt文件时,它根本不起作用。实际上,您自己发现了两个答案中的错误:)这完全是故意的,哈哈。开玩笑吧,我要把它修好。此外,在Windows上,如果希望文件在记事本中正确显示,则需要使用“\r\n”而不仅仅是“\n”