Powiedzmy mam proste struct A o właściwości String B:Mapa elemencie vs tablicy kodowanym w Go
type A struct {
B string
}
Poniższy kod przy użyciu tablicy A typy:
testArray := []A{A{}}
testArray[0].B = "test1"
fmt.Println(testArray[0].B)
Wydruk "test1" zgodnie z oczekiwaniami.
Ale ten kod, który wydaje się równie prosta:
testMap := make(map[string]A)
testMap["key"] = A{}
testMap["key"].B = "test2"
fmt.Println(testMap["key"].B)
Will nie wydrukować "test2", ale zamiast spowoduje następujący błąd:
cannot assign to testMap["key"].B
Więc dlaczego przypisanie do podwłasność w mapie powoduje błąd podczas przypisywania do podwłasności w pracy tablicowej zgodnie z oczekiwaniami? Chcę wiedzieć zarówno, dlaczego to nie działa dla map i dlaczego działa dla tablic. Chciałbym także pokusić się o spekulacje, dlaczego zaprojektowali język z tą różnicą między dwiema strukturami danych.
'testArray' nie jest" tablicą ". To jest "kawałek". "Array" to coś innego. – newacct