ホームページ  >  記事  >  バックエンド開発  >  Go で継承なしでポリモーフィズムを実現する方法: 実践例

Go で継承なしでポリモーフィズムを実現する方法: 実践例

DDD
DDDオリジナル
2024-11-18 20:44:02502ブラウズ

How to Achieve Polymorphism in Go Without Inheritance: A Practical Example

Go のポリモーフィズムを理解する: よくある誤解を暴く

ポリモーフィズムはオブジェクト指向プログラミングの基本的な概念ですが、オブジェクト指向プログラミングでは別の形式になります。行く。コードでのポリモーフィズムの実装に関連する特定の問題に対処することで、問題を明確にしましょう。

Go では、ポリモーフィズムは、型が実装する必要がある一連のメソッドを定義するインターフェイスを通じて実現されます。オブジェクト指向言語のような継承を使用する代わりに、Go は合成を使用して、共通の動作を持つ型を作成します。

コードでは、さまざまな型に共通のフィールドを含む「基本」型 BaseTX を作成しようとしています。取引の。ただし、継承の代わりに合成を使用する必要があるため、共有フィールドを格納するメタデータ構造体を作成します:

トランザクション タイプにはメタデータが埋め込まれます:

これらのトランザクション タイプで共通の操作を実行するには、共有トランザクションを処理するメタデータのlogicAndSaveTXメソッドを定義します。ロジック:

次に、共通の動作を拡張する RewardTX とAllowanceTX のカスタムlogicAndSaveTX メソッドを定義します:

メタデータをトランザクション タイプに構成し、各タイプに特定のメソッドを実装することで、継承や基本クラスに依存せずに、目的の動作を実現します。これは、インターフェイスと合成を通じてポリモーフィズムを処理するための「適切な Go 方法」です。

以上がGo で継承なしでポリモーフィズムを実現する方法: 実践例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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