「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Goでマップ内の配列に値を追加するにはどうすればよいですか?

Goでマップ内の配列に値を追加するにはどうすればよいですか?

2024 年 11 月 21 日に公開
ブラウズ:446

How to Append Values to Arrays Inside Maps in Go?

Go でマップ内の配列に値を追加する

Go でマップを操作する場合、マップ内の配列を操作するのは難しい場合があります。この記事では、マップ内に格納されている配列に値を追加する問題の解決策を提供します。

この問題を理解するには、次のコードを検討してください。

type Example struct {
    Id []int
    Name []string
}
var MyMap map[string]Example

ここで、MyMap は文字列を Example 構造体のインスタンスにマップするマップです。例の構造体には配列 Id と Name が含まれています。目標は、これらの配列に値を追加することです。

これを行うための最初の試みでは、多くの場合、サンプル構造体のメソッドを呼び出し、配列にアクセスして変更するためのポインター レシーバーを渡します。ただし、Oferty.AppendExample(1, "SomeText") の結果を MyMap["key1"] に直接代入することは機能しません。これは、マップには構造体自体ではなく Example 構造体のコピーが保存されるためです。

解決策は、コードを次のように変更することです:

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)
}

サンプル構造体のインスタンスを作成し、それへの参照を (ポインター型を使用して) マップに保存することで、配列を直接変更できます。 AppendOffer メソッドは Example 構造体へのポインターを操作し、配列に値を追加できるようにします。

このソリューションは、MyMap に保存されている Example struct 内の配列に値を効果的に追加します。これは、Go のマップ内の配列を管理するための明確かつ簡潔なアプローチを提供します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3