Sagen wir, ich habe eine einfache Struktur ein mit einem String-Eigenschaft b:Karte von structs vs Array von Strukturen in Go
type A struct {
B string
}
Der folgende Code eine Reihe von A-Typen verwenden:
testArray := []A{A{}}
testArray[0].B = "test1"
fmt.Println(testArray[0].B)
Wird "test1" wie erwartet ausgeben.
Aber dieser Code, der ebenso einfach scheint:
testMap := make(map[string]A)
testMap["key"] = A{}
testMap["key"].B = "test2"
fmt.Println(testMap["key"].B)
Wird nicht drucken "test2", sondern führt in dem folgenden Fehler:
cannot assign to testMap["key"].B
So warum die sich auf die Zuweisung von Untereigenschaft in einer Zuordnung führen zu einem Fehler beim Zuweisen der Untereigenschaft in einem Array wie erwartet? Ich möchte wissen, warum dies nicht funktioniert für Karten und warum es für Arrays funktioniert. Ich würde auch gerne darüber spekulieren, warum sie die Sprache mit diesem Unterschied zwischen den beiden Datenstrukturen entworfen haben.
'testArray' ist kein" Array ". Es ist eine "Scheibe". "Array" ist etwas anderes. – newacct