GO 源码中的 File struct 的作用是什么 ?

Jbryan 发布于 2013/05/30 20:40
阅读 131
收藏 0
Go
在源码中,看到这个:

~/go/src/pkg/os$ vim file_unix.go

// File represents an open file descriptor.
type File struct {
       *file
}

// file is the real representation of *File.
// The extra level of indirection ensures that no clients of os
// can overwrite this data, which could cause the finalizer
// to close the wrong file descriptor.
type file struct {
       fd      int
       name    string
       dirinfo *dirInfo // nil unless directory being read
       nepipe  int32    // number of consecutive EPIPE in Write
}

看了注释之后我还是不太明白 File 的作用是什么 。

为什么不能直接这样写???

type File struct {
       fd      int
       name    string
       dirinfo *dirInfo // nil unless directory being read
       nepipe  int32    // number of consecutive EPIPE in Write
}

注释中说,中间层可以保证数据不会被覆盖 ,错误的关闭文件描述符。

怎么样做会“错误的关闭文件描述符”呢??


加载中
返回顶部
顶部