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