构造函数 单纯使用new进行初始化无法满足初始化需求,必须需要初始化的构造函数,例如以下这个例子: func NewFile(fd int, name string) *File { if fd < 0 { return nil } f := new(File) f.fd = fd f.name = name f.dirinfo = nil f.nepipe = 0 return f } 虽然使用了new进行了初始化,但是后续的一些属性初始化较为复杂,所以使用复合声明,大幅度简化代码复杂程度。