【发布时间】:2015-01-07 20:14:24
【问题描述】:
谁能解释这两个符号之间的细微差别:(*T)(nil)/new(T) 和 &T{}。
type Struct struct {
Field int
}
func main() {
test1 := &Struct{}
test2 := new(Struct)
test3 := (*Struct)(nil)
fmt.Printf("%#v, %#v, %#v \n", test1, test2, test3)
//&main.Struct{Field:0}, &main.Struct{Field:0}, (*main.Struct)(nil)
}
似乎这个(*T)(nil)与其他的唯一区别是它返回nil指针或不返回指针,但仍然为Struct的所有字段分配内存。
【问题讨论】:
标签: memory memory-management syntax go