Golang で埋め込み構造体メソッドをオーバーライドするにはどうすればよいですか?
Golang での埋め込み構造体メソッドのオーバーライド
Golang では、構造体が別の構造体を埋め込む (埋め込みと呼ばれる) と、埋め込まれた構造体のフィールドそしてメソッドは埋め込み構造体に直接アクセスできるようになります。ただし、埋め込み構造体が埋め込み構造体からメソッドを再定義する場合、元のメソッドをオーバーライドできます。
次のコードを考えてみましょう。
<code class="go">type Base struct { val int } func (b *Base) Set(i int) { b.val = i } type Sub struct { Base changed bool }</code>
Base を Sub に埋め込みました。ここで、Sub から Base の Set メソッドにアクセスしようとすると、Sub 自体の Set メソッドによって隠蔽されます。
<code class="go">func t16() { s := &Sub{} // This calls Base's Set method s.Base.Set(1) // This causes an error, as s.Set hides Base's Set s.Set(10) }</code>
この動作をオーバーライドするには、Base の Set メソッドを明示的に呼び出すように Sub の Set メソッドを再定義します。
<code class="go">func (b *Sub) Set(i int) { b.Base.Set(i) b.changed = true }</code>
ここで、s.Set() を呼び出すと、Base の Set メソッドが呼び出され、同時に Sub の変更を追跡できるようになります。
<code class="go">func t16() { s := &Sub{} // Calls Sub's overridden Set method s.Set(10) fmt.Printf("%+v\n", s) // Output: {Base:{val:10} changed:true} }</code>
このメソッドを使用すると、以下のことが可能になります。埋め込み構造体フィールドを介して元のメソッドへのアクセスを維持しながら、埋め込み構造体のメソッドをオーバーライドします。
以上がGolang で埋め込み構造体メソッドをオーバーライドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?
