当前位置: > > > > Golang 将自定义 os.File 添加到 os.Stdout
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的相关知识,也可关注米云公众号。
