如何在循环中创建映射键?

时间:2017-06-23 13:54:59

标签: go

我根据教科书做,但有一个错误

恐慌:分配到零地图中的条目(在行keyval["{x[i]}"] = 0中)

package main
import "fmt"

func main() {
    x := [3]string{"aa","bb","cc"}

    var keyval map[string]int

    for i := 0; i < len(x); i++ {
        keyval["{x[i]}"] = 0
    }

    fmt.Println(keyval)
}

我尝试使用keyval["x[i]"] = 0,但效果相同

1 个答案:

答案 0 :(得分:4)

您必须先初始化地图:

keyval := make(map[string]int)

根据this博文:

  

地图类型是引用类型,如指针或切片,等等   m以上的值为零;它没有指向初始化的地图。

GoPlay:
https://play.golang.org/p/2JuPS1J7KK

编辑以回答OP的后续行动。如果您希望将切片中的字符串用作地图的关键字,则需要进行其他更改:

keyval[x[i]] = 0

GoPlay:
https://play.golang.org/p/feMSwvbEGS