我是按照课本做的,但是有错误
panic :分配给 nil 映射中的条目(在 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
但效果是一样的
最佳答案
您必须首先初始化您的 map :
keyval := make(map[string]int)
根据 this博文:
Map types are reference types, like pointers or slices, and so the value of m above is nil; it doesn't point to an initialized map.
在这里玩:
https://play.golang.org/p/2JuPS1J7KK
编辑以回答 OP 的跟进。如果您希望使用 slice 中的字符串作为映射的键,则需要进行额外的更改:
keyval[x[i]] = 0
关于go - 如何在循环中创建 map 键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44723188/