Append to Slice in Go Struct
このコード スニペットでは、ユーザーは MyBoxItem と MyBox の 2 つの構造体を実装しようとしています。その目的は、AddItem メソッドを使用して項目を MyBox 構造体に追加することです。ただし、現在の実装は機能しません。
問題は AddItem メソッドにあります。
func (box *MyBox) AddItem(item MyBoxItem) []MyBoxItem { return append(box.Items, item) }
デフォルトでは、スライス値は参照ではなく値によってパラメータにコピーされます。 。その結果、パラメータのスライスに加えられた変更は元のスライスには反映されません。これを修正するには、元のスライスに append 関数の結果を割り当てる必要があります。
func (box *MyBox) AddItem(item MyBoxItem) []MyBoxItem { box.Items = append(box.Items, item) return box.Items }
さらに、MyBox 型 (*MyBox) へのポインターに対して AddItem メソッドが定義されているため、それを呼び出す必要があります。 main 関数の box.AddItem(item1) として。
以上がGo 構造体のメソッド内のスライスに正しく追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。