首頁  >  文章  >  後端開發  >  如何將值附加到 Go 中映射內的數組,同時保留物件參考?

如何將值附加到 Go 中映射內的數組,同時保留物件參考?

Barbara Streisand
Barbara Streisand原創
2024-11-01 21:28:29902瀏覽

How do you append values to arrays within a map in Go while preserving object references?

在Go 中將值附加到映射內的數組

嘗試將值附加到映射內的數組時,您可能會遇到到設定引用的困難

在Go 中,以下程式碼嘗試將值附加到範例結構:

<code class="go">var MyMap map[string]Example 

type Example struct {
    Id []int
    Name []string
}

package main


import (
  "fmt"
)


type Example struct {
  Id []int
  Name []string
}

func (data *Example) AppendExample(id int,name string) {
   data.Id = append(data.Id, id)
   data.Name = append(data.Name, name)
}

var MyMap map[string]Example

func main() {
   MyMap = make(map[string]Example)
   MyMap["key1"] = Oferty.AppendExample(1,"SomeText")
   fmt.Println(MyMap)
}</code>

但是,由於多種原因,此程式碼不正確:

  • 初始化錯誤: Oferty 是一個未定義的變數。
  • 實例建立: 在將範例新增至地圖之前,必須先建立它的實例。
  • 地圖引用問題:地圖 MyMap 應該包含對範例實例的引用,而不是副本。

以下更正的程式碼解決了這些問題:

<code class="go">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 := &amp;Example{[]int{}, []string{}}
    obj.AppendOffer(1, "SomeText")
    MyMap = make(map[string]*Example)
    MyMap["key1"] = obj
    fmt.Println(MyMap)
}</code>

在此修正後的程式碼中:

  • Example (obj) 的實例是在將其添加到地圖之前創建的。
  • 地圖 MyMap 包含使用指標的範例實例 (*Example)。
  • AppendOffer 方法用於將值附加到範例實例的陣列欄位。

透過實作這些修正,程式碼可以正確附加價值映射內數組的值,同時保留物件參考。

以上是如何將值附加到 Go 中映射內的數組,同時保留物件參考?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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