Go语言的关键字 range,可以配合关键字 for 来迭代切片

2019-12-24  本文已影响0人  沫明
package main

import "fmt"

// range,它可以配合关键字 for 来迭代切片里的每一个元素
func main()  {
    slice := []int{10,20,30,40}
    for index,value := range slice{
        fmt.Printf("index:%d Value:%d Value-Addr: %X ElemAddr: %X\n", index,value, &value, &slice[index])
    }
}
// index 和 value 分别用来接收 range 关键字返回的切片中每个元素的索引和值
//range 返回的是每个元素的副本,而不是直接返回对该元素的引用

//迭代返回的变量是一个在迭代过程中根据切片依次赋值的新变量,
//所以 value 的地址总是相同的,要想获取每个元素的地址,
//需要使用切片变量和索引值(例如上面代码中的 &slice[index])

//index:0 Value:10 Value-Addr: C00009A010 ElemAddr: C00009C020
//index:1 Value:20 Value-Addr: C00009A010 ElemAddr: C00009C028
//index:2 Value:30 Value-Addr: C00009A010 ElemAddr: C00009C030
//index:3 Value:40 Value-Addr: C00009A010 ElemAddr: C00009C038
上一篇下一篇

猜你喜欢

热点阅读