「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go で埋め込み構造体を使用せずにメソッドを継承できますか?

Go で埋め込み構造体を使用せずにメソッドを継承できますか?

2024 年 11 月 11 日に公開
ブラウズ:443

Can you inherit methods without using embedded structs in Go?

メソッド継承のための埋め込み構造体

質問

埋め込み構造体を使用せずに型のメソッドを継承することは可能ですか?

コンテキスト

議論は、埋め込み構造体を使用して別のタイプのメソッドにアクセスするという概念を中心に展開します。著者は、構造体を埋め込むと、含まれる構造体を初期化するときに、埋め込まれた構造体も初期化する必要があり、これが面倒だと指摘しています。彼らは、問題を実証するためのコード例を提供し、埋め込み構造体の明示的な初期化を避けたいという要望を表明しています。

回答

この回答では、埋め込み構造体なしでの継承を妨げる技術的制限に対処しています。これは、メソッドをあるタイプから別のタイプにプロモートすることは埋め込みによってのみ可能であることを説明しています。 Go 仕様は権威として引用されており、構造体のメソッド セットには、その構造体をレシーバー型として宣言されたメソッドのみが含まれると述べられています。これは、プロモートされたフィールドの概念に組み込まれます。プロモートされたフィールドは、含まれている構造体を介して直接アクセスできる、匿名の埋め込み構造体のフィールドです。ただし、プロモートされたフィールドは複合リテラルでは使用できないため、埋め込まれた匿名フィールドを含む構造体を作成する場合は明示的な初期化が必要です。

制限事項と回避策

回答では、埋め込み構造体の使用の制限と、 Go には直接継承メカニズムが存在しません。データは合成を通じてアクセスできるため、埋め込み構造体を使用する主な理由は、データ フィールドではなくメソッドを促進することであることが強調されています。

追加メモ

この応答は、ユーモラスにも、次への個人的な挨拶で終わっています。著者のジェフは以前のやり取りについて言及しています。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3