题目, 下面的代码输出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]