首页 > 编程笔记

Go语言range语句的用法

在Go语言中,每一个 for 语句都可以使用一个特殊的 range 子语句,其作用类似于迭代器,用于轮询数组或者切片值中的每一个元素,也可以用于轮询字符串的每一个字符,以及字典值中的每个键值对,甚至还可以持续读取一个通道类型值中的元素。

range 关键字的右边是 range 表达式,表达式一般写在 for 语句的前面,以便提高代码的易读性。

range 关键字的左边表示的是一对“索引-值”对,根据不同的表达式,返回不同的结果,range 右边表达式返回的类型如表1所示。

表1:Go语言 range 右边表达式返回的类型
右边表达式返回的类型 第一个值 第二个值
string index str[index],返回类型为 rune
array/slice index str[index]
map key m[]key
channel element

range 右边表达式返回的类型,除了轮询字符串外,还包括数组、切片、字典及通道等,例如:
package main
import "fmt"
func main() {
    numbers := [5]int{1, 2, 3, 4}
    for i, x := range numbers {
      fmt.Printf("第%d次,x的值为%d.\n", i, x)
   }
}
运行结果如下:
第0次,x的值为1.
第1次,x的值为2.
第2次,x的值为3.
第3次,x的值为4.
第4次,x的值为0.

在以上代码中,定义了 numbers 的长度为5,但 numbers 中只有 4 个值,因此最后一个为空值,从 for 循环返回的信息可以看到第 5 次 x 的值为 0,代码块的确执行了 5 次。

推荐阅读