首页 > 解决方案 > golang的(切片)变量初始化程序中的[...]是什么意思?

问题描述

我正在浏览标准库,特别是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{}在那种语法中,有什么东西不仅仅意味着简单吗?

标签: go

解决方案


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

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

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


推荐阅读