当前位置: > > > > Golang 将自定义 os.File 添加到 os.Stdout
来源:stackoverflow
2024-04-22 09:24:30
0浏览
收藏
学习Golang要努力,但是不要急!今天的这篇文章《Golang 将自定义 os.File 添加到 os.Stdout》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!
问题内容
每当我将某些内容打印到控制台时,我都会尝试将输出写入文件。似乎没有任何使用连续流的好例子,而是读取单个值,所以我想出了以下代码:
package main import ( "fmt" "io" "os" ) type ahhh struct { *os.File __writer io.Writer } func (me *ahhh) Write(b []byte) (n int, err error) { return me.__writer.Write(b) } func write_print_to_file(file_name string) { file, _ := os.OpenFile(file_name, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) new_stdout := &ahhh{file, io.MultiWriter(file, os.Stdout)} os.Stdout = new_stdout } func main() { write_print_to_file("output.log") fmt.Println("Hello world!") }
出于某种原因,os.stdout = new_stdout
不想工作。我相当确定这应该是允许的分配,因为我在 fuse 文件系统中使用类似结构的东西,所以我很好奇为什么 os.stdout
不想接受我继承的 os.file
。
或者,如果这确实不可能,有什么好的建议可以将连续数据流写入文件吗?
解决方案
它是 *os.File
吗?不。为什么要允许它?
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持!更多关于Golang的相关知识,也可关注公众号。