既然切片是一个集合,那么自然可以迭代其中的元素。go语言有特殊关键之range,可以配合关键字for来迭代切片里的元素
package main
import "fmt"
func main() {
slice := []int{10, 20, 30, 40}
for index, value := range slice {
fmt.Printf("index:%d,value:%d\n", index, value)
}
}
和数组类似,迭代切片是,range会返回两个值,第一个值是当前迭代到的索引位置,第二个值是该位置对应元素值的一份副本。
range创建的是每个元素的副本,而不是返回对该元素的引用,如下代码所示。
package main
import "fmt"
func main() {
slice := []int{10, 20, 30, 40}
for index, value := range slice {
fmt.Printf("value :%d value-Addr:%x ElemAddr:%x\n", value, &value, &slice[index])
}
}
创建一个整型切片,其长度和容量都是4个元素。迭代每个元素,并显示值和地址
上面的value-Addr之所以全部一样,是因为range执行时返回的这个value变