Go でマップ内の配列に値を追加する
Go でマップを操作する場合、それらのマップ内の配列を操作するのは困難な場合があります。この記事では、マップ内に格納されている配列に値を追加する問題の解決策を提供します。
問題を理解するには、次のコードを検討してください。
<code class="go">type Example struct { Id []int Name []string } var MyMap map[string]Example</code>
ここで、MyMap はマップです。これは文字列を Example 構造体のインスタンスにマップします。例の構造体には配列 Id と Name が含まれています。目標は、これらの配列に値を追加することです。
これを行う最初の試みでは、多くの場合、サンプル構造体のメソッドを呼び出し、配列にアクセスして変更するためのポインター レシーバーを渡します。ただし、Oferty.AppendExample(1, "SomeText") の結果を MyMap["key1"] に直接割り当てることは機能しません。これは、マップには構造体自体ではなく Example 構造体のコピーが保存されるためです。
解決策は、次のようにコードを変更することです。
<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 := &Example{[]int{}, []string{}} obj.AppendOffer(1, "SomeText") MyMap = make(map[string]*Example) MyMap["key1"] = obj fmt.Println(MyMap) }</code>
サンプル構造体のインスタンスを作成し、それへの参照をマップに (ポインター型を使用して) 保存することで、配列を直接変更できます。 AppendOffer メソッドは Example 構造体へのポインターを操作し、配列に値を追加できるようにします。
このソリューションは、MyMap に保存されている Example struct 内の配列に値を効果的に追加します。これは、Go のマップ内の配列を管理するための明確かつ簡潔なアプローチを提供します。
以上がGoでマップ内の配列に値を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。