亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go中的結構映射與結構數組

Go中的結構映射與結構數組

千巷貓影 2021-06-15 17:01:37
假設我有一個帶有字符串屬性 b 的簡單結構 a: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”,而是會導致以下錯誤:無法分配給 testMap["key"].B那么,為什么分配給映射中的子屬性會導致錯誤,同時分配給數組中的子屬性按預期工作?我想知道為什么這對地圖不起作用以及為什么它對數組起作用。我也很想知道為什么他們設計語言時會在兩種數據結構之間存在這種差異。
查看完整描述

3 回答

?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

在郵件列表上回答了一些長度,但簡短的解釋是這不起作用,因為地圖條目不可尋址。這意味著您無法獲取地圖中條目的地址。那是因為向地圖添加新值可能會導致地圖條目移動,從而導致地址發生變化。因為您不能在地圖中獲取條目的地址,所以所有地圖操作都使用整數值:從地圖中復制一個整數值,將一個整數添加到地圖中。分配給映射中結構的一個字段將需要讀取-修改-寫入操作,而映射不支持(它們可以,但不支持,并且支持它們需要成本)。

數組和切片中的元素是可尋址的,因為它們在創建后不會移動。


查看完整回答
反對 回復 2021-06-21
  • 3 回答
  • 0 關注
  • 906 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號