解開 Go 中地圖內的數組附加
在 Go 中,地圖是組織資料的強大工具。但是,當嘗試將值附加到這些映射中的陣列時,可能會變得很棘手。考慮一個假設的場景:
var MyMap map[string]Example type Example struct { Id []int Name []string }
謎題揭曉
程式碼片段嘗試將整數和字串附加到名為 MyMap 的映射中的陣列。然而,該實作包含一個嚴重錯誤:
MyMap["key1"] = Offerty.AppendOffer(1, "SomeText")
這裡,Offerty 無法被辨識為對象,因為它從未被定義。要解決此問題,請在將範例結構體與地圖關聯之前建立實例,如下所示:
obj := &Example{[]int{}, []string{}} obj.AppendOffer(1, "SomeText")
引用,而非複製
此外,程式碼片段僅建立範例結構的副本,而不是對其的引用。要維護指向映射內結構的指標:
MyMap = make(map[string]*Example) MyMap["key1"] = obj
解決方案
透過這些修改,修改後的程式碼成功將值附加到映射內的陣列:
package main import "fmt" type Example struct { Id []int Name []string } func (data *Example) AppendOffer(id int, name string) { data.Id = append(data.Id, id) data.Name = append(data.Name, name) } var MyMap map[string]*Example func main() { obj := &Example{[]int{}, []string{}} obj.AppendOffer(1, "SomeText") MyMap = make(map[string]*Example) MyMap["key1"] = obj fmt.Println(MyMap) }
此解決方案保留了映射中的原始範例結構,從而可以從外部範圍。
以上是如何在 Go 中將值附加到映射內的陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!