去 - 范围
range关键字在for循环中使用来迭代数组、切片、通道或映射的项目。对于数组和切片,它以整数形式返回项目的索引。对于映射,它返回下一个键值对的键。Range 返回一个值或两个值。如果范围表达式的左侧仅使用一个值,则它是下表中的第一个值。
| 范围表达式 | 第一个值 | 第二个值(可选) |
|---|---|---|
| 数组或切片 a [n]E | 索引 i 整数 | 一个[i] E |
| String s 字符串类型 | 索引 i 整数 | 符文整数 |
| 地图 m 地图[K]V | 密钥 k K | 值 m[k] V |
| 通道 c 通道 E | 元素e E | 没有任何 |
例子
以下段落展示了如何使用范围 -
package main
import "fmt"
func main() {
/* create a slice */
numbers := []int{0,1,2,3,4,5,6,7,8}
/* print the numbers */
for i:= range numbers {
fmt.Println("Slice item",i,"is",numbers[i])
}
/* create a map*/
countryCapitalMap := map[string] string {"France":"Paris","Italy":"Rome","Japan":"Tokyo"}
/* print map using keys*/
for country := range countryCapitalMap {
fmt.Println("Capital of",country,"is",countryCapitalMap[country])
}
/* print map using key-value*/
for country,capital := range countryCapitalMap {
fmt.Println("Capital of",country,"is",capital)
}
}
当上面的代码被编译并执行时,它会产生以下结果 -
Slice item 0 is 0 Slice item 1 is 1 Slice item 2 is 2 Slice item 3 is 3 Slice item 4 is 4 Slice item 5 is 5 Slice item 6 is 6 Slice item 7 is 7 Slice item 8 is 8 Capital of France is Paris Capital of Italy is Rome Capital of Japan is Tokyo Capital of France is Paris Capital of Italy is Rome Capital of Japan is Tokyo