1
回答
GO 源码中的 File struct 的作用是什么 ?
在源码中,看到这个:

~/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
}

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

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


Go
举报
Jbryan
发帖于5年前 1回/117阅
顶部