【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
相關文章
相關標籤/搜索