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