Go语言 范围(range)

  • range

    range关键字在for循环中用于迭代数组、切片、通道(channel)或映射(map)的项。对于数组和切片,它以整数的形式返回项的索引。对于映射,它返回下一个键值对的键。Range返回一个值或两个值。如果在Range表达式的左侧只使用了一个值,则该值是下表中的第一个值。
    Range表达式 第一个值 第二个值[可选的]
    Array 或者 slice a [n]E 索引 i int a[i] E
    String s string type 索引 i int rune int
    map m map[K]V 键 k K 值 m[k] V
    channel c chan E 元素 e E none
  • 示例

    以下段落显示了如何使用range-
    
    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