这是示例代码:package mainimport ( "fmt")type A struct { Name string}func (this *A) demo(tag string) { fmt.Printf("%#v\n", this) fmt.Println(tag)}func main() { var ele A ele.demo("ele are called") ele2 := A{} ele2.demo("ele2 are called")}运行结果:&main.A{Name:""}ele are called&main.A{Name:""}ele2 are called它看起来像那些是相同的约var ele A和ele2 := A{}所以,结构体的零值不是nil,而是一个结构体,所有的属性都被初始化为零值。猜对了吗?如果猜对了,那么性质var ele A和ele2 := A{}是一样的吧?
3 回答
Qyouu
TA贡献1786条经验 获得超11个赞
为什么在有一些文档时(正确)猜测?
当通过声明或 new 调用为变量分配存储空间时,或通过复合文字或 make 调用创建新值时,并且未提供显式初始化,则给出变量或值一个默认值。
此类变量或值的每个元素都设置为其类型的零值:
false
对于布尔值,
0
对于整数,
0.0
对于花车,
""
对于字符串,以及
nil
指针、函数、接口、切片、通道和映射。此初始化是递归完成的,因此例如,如果未指定任何值,则结构数组的每个元素都将其字段清零。
请注意,无法将结构值设置为nil
(但您可以将指向结构的指针的值设置为nil
)。
- 3 回答
- 0 关注
- 186 浏览
添加回答
举报
0/150
提交
取消