Go のマップ内に追加された配列を解明する
Go では、マップはデータを整理するための強力なツールです。ただし、これらのマップ内の配列に値を追加しようとすると、扱いが難しくなる可能性があります。仮説のシナリオを考えてみましょう。
var MyMap map[string]Example type Example struct { Id []int Name []string }
Puzzle Unveiled
このコード スニペットは、MyMap というマップ内の配列に整数と文字列を追加しようとします。ただし、この実装には重大なエラーが含まれています。
MyMap["key1"] = Offerty.AppendOffer(1, "SomeText")
ここでは、Offerty は定義されていないため、オブジェクトとして認識できません。これを解決するには、次に示すように、マップに関連付ける前にサンプル構造体のインスタンスを作成します。
obj := &Example{[]int{}, []string{}} obj.AppendOffer(1, "SomeText")
参照、コピーではありません
さらに、コード スニペットは、サンプル構造体のコピーを作成するだけであり、それへの参照は作成しません。マップ内の構造体へのポインターを維持するには:
MyMap = make(map[string]*Example) MyMap["key1"] = obj
Solution in Sight
これらの変更により、改訂されたコードはマップ内の配列に値を正常に追加します。 :
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) }
このソリューションでは、マップ内の元のサンプル構造体が保存され、更新と変更が可能になります。スコープ外からの配列。
以上がGo でマップ内の配列に値を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。