登录
首页 >  Golang >  Go问答

golang是否文件File自带有io.Writer的属性?

来源:SegmentFault

时间:2023-01-26 12:41:42 359浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《golang是否文件File自带有io.Writer的属性?》,聊聊文件、go,我们一起来看看吧!

问题内容

os.Stdout本质是一个文件File吗?

var (
    Stdin  = NewFile(uintptr(syscall.Stdin), "/dev/stdin")
    Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout")
    Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr")
)

我使用io.Copy(os.Stdout, io.reader) 可以将reader Copy到os.Stdout中,是否文件File自带有io.Writer的属性?

到源码中寻找,发现Go中的File最终是这个结构体,没有看到哪儿有io.Writer的相关痕迹呀?

type file struct {
    pfd        poll.FD
    name       string
    dirinfo    *dirInfo // nil unless directory being read
    appendMode bool     // whether file is opened for appending
}

正确答案

File 不是 file 。File 里有一个 file 的指针。不过 file 是私有的,包外并不可见。

io.Writer 是一个 interface, 里面只有一个方法

Write(p []byte) (n int, err error)

File 实现了这个方法:

func (f *File) Write(b []byte) (n int, err error)

也就是,

File
实现了
io.Writer
这个 interface 。对 golang 来说,
File
是一个
io.Writer

到这里,我们也就讲完了《golang是否文件File自带有io.Writer的属性?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于golang的知识点!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表