《零基础Go语言算法实战》
【题目 1-23】map 错误排查
请解释以下代码在执行时为什么会报错。
type Books struct {
name string
}
func main() {
m := map[string]Books{"name": {"《零基础 Go 语言算法实战》"}}
m["book"].name = "《Go 语言高级开发与实战》"
}
【解答】
map 的 value 本身是不可寻址的,因为 map 中的值会存储在内存中,并且旧的指针地址
在 map 改变时会变得无效。所以如果需要修改 map 值,可以将 map 中的非指针类型的值修
改为指针类型,如使用 map[string]*Books 。