題目, 下面的代碼輸出golang
package main import ( "fmt" ) func rangeAppend() { v := []int{1, 2, 3} for i := range v { v = append(v, i) } fmt.Printf("%v", v) } func main() { rangeAppend() }
golang playground https://play.golang.org/p/MxP...app
爲何上面的程序輸出code
[1 2 3 0 1 2]
對於不一樣種類的range表達式結果值,for語句的迭代變量的數量能夠有所不一樣, 代碼中只有一個迭代變量的狀況意味着什麼呢?這意味着,該迭代變量只會表明當次迭代對應的元素值的索引值索引
下面代碼中的i 是索引值, 0 1 2get
for i := range v { v = append(v, i) }
for語句的迭代變量是兩個, 第一個是索引值, 第二個是迭代的值class
package main import ( "fmt" ) func rangeAppend() { v := []int{1, 2, 3} for _, i := range v { v = append(v, i) } fmt.Printf("%v", v) } func main() { rangeAppend() }
上面輸出import
[1 2 3 1 2 3]