作用
配合引用类型的数据类型进行读取里面的内容
形式
循环key和value、index和value--->显示值和地址
循环value
循环key和value
package main
?
import "fmt"
?
func main() {
/*声明一个切片*/
slicePractice := []int{10,20,30,40}
?
/*迭代值,显示key和value*/
for i, j := range slicePractice {
fmt.Printf("第%d号索引的值是%d\n", i, j)
}
}
显示值和地址:
package main
?
import "fmt"
?
func main() {
/*声明一个切片*/
slicePractice := []int{10,20,30,40}
?
/*显示值和地址*/
for address, index := range slicePractice {
fmt.Printf("Value: %d Value-Addr: %X ElemAddr: %X\n", index, &index, &slicePractice[address])
}
}
代码说明:
迭代返回的变量是一个在迭代过程中根据切片依次赋值的新变量,所以 value 的地址总是相同的,要想获取每个元素的地址,需要使用切片变量和索引值&slice[index]
只循环key
package main
?
import "fmt"
?
func main() {
/*声明一个切片*/
slicePractice := []int{10,20,30,40}
?
for index,_ := range slicePractice {
fmt.Printf("Index value is %d\n", index)
fmt.Printf("引用地址是%x\n", &index)
}
}
/*
可以输出变量的引用--->指针
不需要索引值,也可以使用下划线_来忽略这个值
*/
range 总是会从切片头部开始迭代。想对迭代做更多的控制,则可以使用传统的 for 循环
package main
?
import "fmt"
?
func main() {
// 创建一个整型切片,并赋值
slice := []int{10, 20, 30, 40}
// 从第三个元素开始迭代每个元素
for index := 2; index < len(slice); index++ {
fmt.Printf("Index: %d Value: %d\n", index, slice[index])
}
}