本文共 523 字,大约阅读时间需要 1 分钟。
golang中 struct{} 和 struct
使用 new 函数时,声明变量和分配内存并不需要放在一起,可以先声明一个变量,然后再通过 new 函数为之分配内存,比如下面的写法:
var nick *Personnick = new (Person)
new 函数的特点是只能把内存初始化为零值并返回其指针,如果要通过字面量初始化该内存就需要使用混合字面量语法:
&T{…} 比如下面的写法:nick := &Person{ Name: "nick", Age: 28, Email: "nickli@xxx.com",}
此时 nick 的类型也是 *Person
。因此我们可以得出下面的结论:
new(Type)
和 &Type{}
是等价的。 所以一般如果是只声明(定义)一个struct 直接用: var s1 struct;
把struct当作int就行,struct内部都是0值(非空)
而声明结构体指针时,由于指针不显式只想一块内存的话是nil,所以声明的时候用 var p1 = &struct{}
后面的{}相当于 new的作用:分配一块内存(&p1 的值),把p1指向这块内存。
转载地址:http://onkzi.baihongyu.com/