【发布时间】:2013-08-07 15:05:32
【问题描述】:
假设我有一个带有字符串属性 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
那么,为什么分配给地图中的子属性会导致错误,而分配给数组中的子属性会按预期工作?我想知道为什么这对地图不起作用以及为什么它适用于数组。我也很想知道他们为什么设计了两种数据结构之间存在这种差异的语言。
【问题讨论】:
-
testArray不是“数组”。它是一个“切片”。 “数组”是不同的。