go中的以下两种语法有什么区别?
x := [...]int{ 1:1, 2:2 }
x := []int{ 1:1, 2:2 }
Go的文档说"符号...指定的数组长度等于最大元素索引加一个"。但是上述两种语法都给出了相同的长度(3)。
此运营商是否有名称" ..."? 没有找到在谷歌搜索此运营商的方法。
答案 0 :(得分:9)
第一行使用数组文字创建array,其长度由编译器自动计算。它在语言规范的Composite literals部分详细说明。
符号...指定的数组长度等于最大元素索引加一。
注意:不要将此与用于指定可变参数参数的...
混淆或将切片作为其值传递。详细信息请参见规范的Function types部分。
第二行使用切片文字,结果为slice。请注意,在引擎盖下也会创建一个数组,但这是不透明的。