8.27Go之容器之range循环迭代切片

8.27Go之容器之range循环迭代切片

作用

配合引用类型的数据类型进行读取里面的内容

形式

  • 循环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])
  }
}

 

8.27Go之容器之range循环迭代切片

上一篇:修饰符


下一篇:java面试题二