Допустим, у меня есть простой структуры а, с строкой свойства Ь:Карта структур против массива структур в Go
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», но вместо этого приведет к следующей ошибке:
cannot assign to testMap["key"].B
Итак, почему назначение на subproperty в карте приводит к ошибке, а присвоение подзадачи в массиве работает как ожидалось? Я хочу знать, почему это не работает для карт и почему это работает для массивов. Мне также нравятся некоторые предположения о том, почему они разработали язык с этой разницей между двумя структурами данных.
'testArray' не является« массивом ». Это «срез». «Массив» - это нечто другое. – newacct