ホームページ  >  記事  >  バックエンド開発  >  具象型でインターフェイス メソッドを実装するときにインターフェイスの不一致を処理するにはどうすればよいですか?

具象型でインターフェイス メソッドを実装するときにインターフェイスの不一致を処理するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-27 04:20:02390ブラウズ

 How to Handle an Interface Mismatch When Implementing Interface Methods with Concrete Types?

インターフェイスを返す Go インターフェイス メソッドが具体的な型を返すメソッドと一致しません

問題:

インターフェイスを返すインターフェイス メソッドは、インターフェイスを実装する具象型ではなく、実装型がインターフェイス自体を宣言している場合にのみ機能します。

質問:

どうすればよいですか?サードパーティの具象型への変更を回避しながらこの問題を解決しますか?

回答:

インターフェイスの不一致を調整するために、カプセル化手法を採用します。

1.ラッパー手法:

サードパーティの具象型をラップし、目的のインターフェイスを提供する新しい型を作成します:

<code class="go">type MyBar Bar

func (b *MyBar) GetStringer() fmt.Stringer {
    return &Foo{"foo"}
}</code>

このアプローチにより、インターフェイスに影響を与えることなく、目的のインターフェイスにカスタマイズできます。オリジナルコンクリートタイプ

2.埋め込み型テクニック:

サードパーティの具象型を新しい型に埋め込み、必要なインターフェイス実装を提供します:

<code class="go">type MyBar struct{ Bar }

func (b *MyBar) GetStringer() fmt.Stringer {
    return b.Bar.GetStringer()
}</code>

埋め込みにより、元の具象型の機能が保持されますが、

これらの手法により、元の具象型が準拠しない場合でも、指定されたインターフェイスに準拠するカスタム型を作成できます。これらは、サードパーティのタイプをより広範なインターフェイスベースのシステムに統合するための柔軟なアプローチを提供します。

以上が具象型でインターフェイス メソッドを実装するときにインターフェイスの不一致を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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