ホームページ  >  記事  >  バックエンド開発  >  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 は未定義の変数です。
  • インスタンスの作成: Example のインスタンスは、マップに追加する前に作成する必要があります。
  • マップ参照の問題: マップ 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 は、Example インスタンスの配列フィールドに値を追加するために使用されます。

これらの修正を実装することで、コードは正しく追加されます。オブジェクト参照を保持しながら、値をマップ内の配列に追加します。

以上がGo でオブジェクト参照を保持しながらマップ内の配列に値を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。