range
关键字在for
循环中用于遍历数组,切片,通道或映射的项目。 使用数组和切片,它返回项的索引为整数。 使用映射则它返回下一个键值对的键。 范围返回一个或两个值。如果在范围表达式的左侧仅使用一个值,则它是下表中的第一个值。
范围表达式 | 第1个值 | 第2个值(可选) |
---|---|---|
数组或切片a[n]e | 索引 i 整数 | a[i]e |
strubg s字符串 | 索引 i 整数 | 符文整数 |
map m map[k]v | key k k | value m[k] v |
channel c chan e | element e e | none |
以下是范围应用的一些示例:
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