假设我有一个简单的结构体a,其中包含一个字符串属性b:
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)
将子属性分配给Map会导致错误:无法分配给testMap ["key"] .B,而不是输出“test2”。那么,为什么将子属性分配给数组时可以正常工作,而将子属性分配给Map会导致错误呢?我想知道为什么对于Map不起作用,而对于数组却起作用。我也很想猜测一下他们为什么在这两个数据结构之间设计了这种差异。
testArray
不是一个“数组”。它是一个“切片”。 “数组”是另一回事。 - newacct