Diciamo che ho una semplice struct una con una proprietà di stringa b:Mappa di struct vs array di struct in Go
type A struct {
B string
}
Il seguente codice che utilizza una matrice di una tipi:
testArray := []A{A{}}
testArray[0].B = "test1"
fmt.Println(testArray[0].B)
Stamperà "test1" come previsto.
Ma questo codice che sembra altrettanto semplice:
testMap := make(map[string]A)
testMap["key"] = A{}
testMap["key"].B = "test2"
fmt.Println(testMap["key"].B)
Will non stampare "test2", ma invece comporterà l'errore seguente:
cannot assign to testMap["key"].B
Quindi, Perché l'assegnazione al la sottoproprietà in una mappa genera un errore durante l'assegnazione alla sottoproprietà in un lavoro array come previsto? Voglio sapere sia perché questo non funziona per le mappe E perché funziona per gli array. Mi piacerebbe anche qualche speculazione sul perché hanno progettato il linguaggio con questa differenza tra le due strutture dati.
'testArray' non è un" array ". È una "fetta". "Array" è qualcosa di diverso. – newacct