首頁  >  文章  >  後端開發  >  如何在 Go 中將值附加到映射內的陣列?

如何在 Go 中將值附加到映射內的陣列?

DDD
DDD原創
2024-11-03 21:58:02131瀏覽

How to Append Values to Arrays Within Maps in Go?

解開 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn