go中的以下两种语法有什么区别?golang中的“...”运算符混淆
x := [...]int{ 1:1, 2:2 }
x := []int{ 1:1, 2:2 }
Go的文档中写着“符号...指定的数组长度等于最大元素索引加1”。但是,上面的语法都给出了相同的长度(3)。
这个操作符是否有一个名称“...”? 没有找到一种方法来搜索这个运营商在谷歌。
go中的以下两种语法有什么区别?golang中的“...”运算符混淆
x := [...]int{ 1:1, 2:2 }
x := []int{ 1:1, 2:2 }
Go的文档中写着“符号...指定的数组长度等于最大元素索引加1”。但是,上面的语法都给出了相同的长度(3)。
这个操作符是否有一个名称“...”? 没有找到一种方法来搜索这个运营商在谷歌。
第一行创建一个array使用数组文字,它的长度由编译器自动计算。它在语言规范的Composite literals部分有详细说明。
符号...指定的数组长度等于最大元素索引加1。
注意:这是不与用于指定可变参数参数或通过片因为它们的值的...
混淆。详细说明参见Function types部分。
第二行使用切片文字并将导致slice。请注意,在引擎盖下还会创建一个数组,但这是不透明的。
我有疑问。首先创建一个数组[0,1,2],第二个创建一个指向数组[0,1,2]的slice(lenght = capacity = 3)。有这两个的区别是什么 – Spartan 2015-02-24 10:03:03
切片是一种动态数组,而数组的大小是固定的。 – Elwinar 2015-02-24 10:08:05
@斯巴达恩,首先,他们有两种不同的类型。如果您在询问数组和切片的用处/用法,请阅读Effective Go:[Arrays](http://golang.org/doc/effective_go.html#arrays),[切片](http:// golang .org/doc/effective_go.html#slices)或博客文章[Go Slices:usage and internals](http://blog.golang.org/go-slices-usage-and-internals)和[Arrays,Slices (和字符串):'append'的机制](http://blog.golang.org/slices) – icza 2015-02-24 10:08:26
您可能想要通过tour.golang.org工作。 – Volker 2015-02-24 11:30:47