假设我有一个带有字符串属性 b 的简单结构 a:
type A struct {
B string
}
以下代码使用 A 类型的数组:
testArray := []A{A{}}
testArray[0].B = "test1"
fmt.Println(testArray[0].B)
将按预期打印出“test1”。
但是这段代码看起来同样简单:
testMap := make(map[string]A)
testMap["key"] = A{}
testMap["key"].B = "test2"
fmt.Println(testMap["key"].B)
不会打印出“test2”,而是会导致以下错误:
无法分配给 testMap["key"].B
那么,为什么分配给映射中的子属性会导致错误,而分配给数组中的子属性会按预期工作呢?我想知道为什么这对地图不起作用以及为什么它对数组起作用。我也很想猜测他们为什么设计了两种数据结构之间存在这种差异的语言。