Go でオブジェクト参照を保持しながらマップ内の配列に値を追加するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-01 21:28:29
オリジナル
912 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!