在golang中的(切片)变量初始值设定项中[...]的含义是什么?

时间:2018-04-30 19:00:58

标签: go

我正在浏览stdlib,特别是https://golang.org/src/html/template/context.go,我遇到了这个代码,它的任务是对之前定义的uint8枚举进行字符串表示。

var stateNames = [...]string{
    stateText:        "stateText",
    stateTag:         "stateTag",
//... many more elided 
    stateCSSBlockCmt: "stateCSSBlockCmt",
    stateCSSLineCmt:  "stateCSSLineCmt",
    stateError:       "stateError",
  }

我对初始化程序的语法感兴趣。在那种语法中,是否存在不仅仅是简单var stateNames = []string{}的东西?

1 个答案:

答案 0 :(得分:4)

好的,正如我应该做的那样,我把它放在操场上,初始化变量,然后调用fmt.Printf("%T", stateNames),得到[25]string

https://play.golang.org/p/3k-WiI8Jh9K

事实证明,这定义了一个数组,而不是一个切片,并且数组被初始化,其长度自动设置为定义的项目数。整齐!