我正在浏览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{}
的东西?
答案 0 :(得分:4)
好的,正如我应该做的那样,我把它放在操场上,初始化变量,然后调用fmt.Printf("%T", stateNames)
,得到[25]string
https://play.golang.org/p/3k-WiI8Jh9K
事实证明,这定义了一个数组,而不是一个切片,并且数组被初始化,其长度自动设置为定义的项目数。整齐!