去 - 范围


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