ホームページ >バックエンド開発 >Golang >Go 構造体のメソッド内のスライスに正しく追加するにはどうすればよいですか?

Go 構造体のメソッド内のスライスに正しく追加するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-12 21:27:11130ブラウズ

How to Correctly Append to a Slice within a Go Struct's Method?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。