Go 范围


range关键字用于for循环遍历数组,切片,通道或映射的项目。对于数组和切片,它以整数形式返回项目的索引。对于地图,它返回下一个键值对的键。范围返回一个值或两个值。如果在范围表达式的左侧仅使用一个值,则它是下表中的第一个值。

范围表达式第一个值第二个值(可选)
Array or slice a [n]Eindex i inta[i] E
String s string typeindex i intrune int
map m map[K]Vkey k Kvalue m[k] V
channel c chan Eelement e Enone

例子


以下段落显示范围的使用方法:

package main

import "fmt"

func main() {
    /* 创建一个切片 */
    numbers := []int{0,1,2,3,4,5,6,7,8}
   
    /* 打印数字 */
    for i:= range numbers {
        fmt.Println("Slice item",i,"is",numbers[i])
    }
   
    /* 创建一个映射 */
    countryCapitalMap := map[string] string {"France":"Paris","Italy":"Rome","Japan":"Tokyo"}
   
    /* 使用key打印映射 */
    for country := range countryCapitalMap {
        fmt.Println("Capital of",country,"is",countryCapitalMap[country])
    }
   
    /* 使用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