Arrays 与“…”混淆&引用;戈朗接线员

Arrays 与“…”混淆&引用;戈朗接线员,arrays,go,operators,slice,Arrays,Go,Operators,Slice,go中的以下两个语法有什么区别 x := [...]int{ 1:1, 2:2 } x := []int{ 1:1, 2:2 } Go的文档中说“符号……指定的数组长度等于最大元素索引加1”。但上述两种语法给出了相同的长度(3) 这个操作员有名字吗?“…”? 在google中找不到搜索此运算符的方法。第一行使用数组文本创建一个,其长度由编译器自动计算。在语言规范的章节中有详细说明 符号。。。指定等于最大元素索引加1的数组长度 注意:这不能与用于指定可变参数或将切片作为其值传递的…相混淆。本规范

go中的以下两个语法有什么区别

x := [...]int{ 1:1, 2:2 }
x := []int{ 1:1, 2:2 }
Go的文档中说“符号……指定的数组长度等于最大元素索引加1”。但上述两种语法给出了相同的长度(3)

这个操作员有名字吗?“…”? 在google中找不到搜索此运算符的方法。

第一行使用数组文本创建一个,其长度由编译器自动计算。在语言规范的章节中有详细说明

符号。。。指定等于最大元素索引加1的数组长度

注意:这不能与用于指定可变参数或将切片作为其值传递的
相混淆。本规范第节对此进行了详细说明


第二行使用一个切片文字,并将导致一个。请注意,引擎盖下也会创建一个阵列,但这是不透明的。

我有疑问。第一个创建一个数组[0,1,2],第二个创建一个引用数组[0,1,2]的切片(lenght=capacity=3)。有这两个的区别是什么?切片是一种动态数组,而数组的大小是固定的。@Spartan嗯,首先,它们是两种不同的类型。如果您想了解数组和切片的有用性/用法,请阅读有效的Go:,或博客文章和@Spartan以补充差异:数组是值,切片是引用。我们鼓励您传递切片(因为它们只是引用),并且它们引用相同的底层数组。数组应小心地作为值传递,因为这样会传递数组的副本。阵列在规划内存的详细布局时非常有用,有时也有助于避免分配,但它们主要是切片的构建块。您可能需要通过tour.golang.org进行操作。