オブジェクト指向プログラミングでは、ポリモーフィズムによりオブジェクトがクラスに基づいて異なる動作を示すことができます。しかし、Go では、ポリモーフィズムの概念は従来の意味では実装されていません。この背後にある理由を掘り下げて、Go で同様の機能を実現する方法を探ってみましょう。
Go は従来のオブジェクト指向言語ではありません。
オブジェクト指向言語とは異なり、Go はメソッドのオーバーライドや仮想メソッドをサポートしません。これにより、Go はより高いレベルの型安全性を維持できます。
Go でポリモーフィズムのような動作を実現するには、次のテクニックを使用できます。
例:
<code class="go">package main import "fmt" // Common interface type Foo interface { printFoo() } // Derived type with unique implementation type FooImpl struct{} func (f FooImpl) printFoo() { fmt.Println("Print Foo Impl") } // Derived type composed using the common interface type Bar struct { FooImpl } // Function returning the common interface func getFoo() Foo { return Bar{} } func main() { fmt.Println("Hello, playground") b := getFoo() b.printFoo() }</code>
この例では、Foo が共通インターフェイスです。 , FooImpl は独自の実装を持つ派生型、Bar は FooImpl を使用して構成された派生型です。 getFoo() 関数は Foo インターフェイスのインスタンスを返すため、さまざまな派生型を 1 つのインターフェイス型として扱うことができます。
このアプローチは、さまざまな派生型をインスタンスとして処理できるようにすることで、Go にポリモーフィズムの形式を提供します。共通インターフェースの
以上が従来のメカニズムを使わずに Go はどのようにしてポリモーフィズムを実現するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。