Golang中Struct的零值

这是示例代码:

package main

import (

"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 Aele2 := A{}

因此,结构的零值不是nil,而是所有属性均初始化为零值的结构。猜对了吗?

如果猜测是正确的,那么的自然var ele Aele2 := A{}是一样的吧?

回答:

为什么要(正确地)猜测有一些文档?

当通过声明或调用new为变量分配存储空间时, 创建新值时

,将给出变量或值默认值。

  • false 对于布尔,
  • 0 对于整数,
  • 0.0 对于花车
  • "" 对于字符串,
  • 以及nil指针,函数,接口,切片,通道和映射。

该初始化是递归完成的,因此,例如,如果未指定任何值,则结构数组的每个元素的字段都将为零。

请注意,无法将struct值设置为nil(但是您可以将指向struct的指针的值设置为nil)。

以上是 Golang中Struct的零值 的全部内容, 来源链接: utcz.com/qa/433842.html

回到顶部