【go踩过的坑】for range

思考

若是对map或者slice使用for...range时,若是只用一个迭代参数,返回的是索引仍是对应的值?code

解答

for x,y := range map/slice时,其中第二个迭代参数能够省略。因此若是只用一个迭代参数,返回的将是索引值。
也就是说以下两行代码的功能相同:索引

for x := range map/slice
for x,_ := range map/slice

好比以下代码:string

package main

import "fmt"

func main(){
    m := make(map[int]string)
    m[1] = "a"
    m[10] = "b"
    
    //使用两个迭代参数
    for k,v := range m{
        fmt.Printf("k = %d v = %s\n", k, v)
    }

    //只用一个迭代参数
    for x := range m{
        fmt.Printf("x = %v\n", x)
    }
}

运行结果为:import

k = 1 v = a
k = 10 v = b
x = 1
x = 10
相关文章
相关标签/搜索