Go 言語のポリモーフィズム: インターフェイスと構成を通じて達成する
オブジェクト指向プログラミングの基本概念であるポリモーフィズムにより、オブジェクトが異なる動作をすることが可能になります。クラスまたはタイプに基づいて。 Go では、従来の OO 言語とは異なり、ポリモーフィズムはインターフェイスと合成を通じて実現されます。
問題:
次のコードのような構造継承を使用して Go にポリモーフィズムを実装しようとしました。スニペットはエラーになります:
<code class="go">type Foo struct { ... } type Bar struct { Foo ... } func getFoo() Foo { return Bar{...} }</code>
解決策:
Go では、ポリモーフィズムはインターフェイスと合成を通じて実現されます。インターフェイスは、型が実装する必要があるメソッドのセットを定義し、インターフェイスが予期されるあらゆる場所で型を多態的に使用できるようにします。
以下のコードは、Go でインターフェイスと合成を使用して多態性を実現する方法を示しています。
<code class="go">package main import "fmt" type Foo interface { printFoo() } type FooImpl struct { } type Bar struct { FooImpl } type Bar2 struct { FooImpl } func (f FooImpl) printFoo() { fmt.Println("Print Foo Impl") } func getFoo() Foo { return Bar{} } func main() { fmt.Println("Hello, playground") b := getFoo() b.printFoo() }</code>
このコード スニペットでは:
Go はインターフェイスと合成を利用することで、従来の継承を必要とせずにポリモーフィズムを実現するための柔軟かつ効率的なアプローチを提供します。
以上が従来の継承を行わずに Go でポリモーフィズムをどのように実現できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。