Hãy nói rằng tôi có một cấu trúc đơn giản một với một tài sản chuỗi b:Bản đồ của cấu trúc vs mảng của cấu trúc trong Go
type A struct {
B string
}
Các mã sau đây sử dụng một mảng của A loại:
testArray := []A{A{}}
testArray[0].B = "test1"
fmt.Println(testArray[0].B)
Sẽ in ra "test1" như mong đợi.
Nhưng mã này mà dường như đều rất đơn giản:
testMap := make(map[string]A)
testMap["key"] = A{}
testMap["key"].B = "test2"
fmt.Println(testMap["key"].B)
Sẽ không in ra "test2" mà thay vào đó sẽ dẫn đến các lỗi sau:
cannot assign to testMap["key"].B
Vì vậy, tại sao gán cho subproperty trong một kết quả bản đồ trong một lỗi trong khi gán cho subproperty trong một mảng làm việc như mong đợi? Tôi muốn biết cả hai lý do tại sao điều này không làm việc cho bản đồ VÀ tại sao nó hoạt động đối với mảng. Tôi cũng thích một số suy đoán về lý do tại sao họ thiết kế ngôn ngữ với sự khác biệt này giữa hai cấu trúc dữ liệu.
'testArray' không phải là" mảng ". Nó là một "lát". "Array" là một cái gì đó khác nhau. – newacct