Golang中Struct的零值
这是示例代码:
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{}
是一样的吧?
回答:
为什么要(正确地)猜测有一些文档?
当通过声明或调用new为变量分配存储空间时, 创建新值时
,将给出变量或值默认值。
:
false
对于布尔,0
对于整数,0.0
对于花车""
对于字符串,- 以及
nil
指针,函数,接口,切片,通道和映射。该初始化是递归完成的,因此,例如,如果未指定任何值,则结构数组的每个元素的字段都将为零。
请注意,无法将struct值设置为nil
(但是您可以将指向struct的指针的值设置为nil
)。
以上是 Golang中Struct的零值 的全部内容, 来源链接: utcz.com/qa/433842.html