Go には従来のポリモーフィズムはありませんが、インターフェイスとリフレクションを使用して同様の効果を実現できます。つまり、インターフェイスを定義し、メソッド セットを明確にします。このインターフェイスを実装する複数の型を作成します。リフレクションを使用すると、特定の型を知らなくてもメソッドを動的に呼び出すことができます。
Go でのポリモーフィズムの実装
実装方法は?
Go には従来の意味でのポリモーフィズムはありませんが、インターフェイスとリフレクション メカニズムを使用してポリモーフィックのような動作を実現できます。
インターフェース:
リフレクション:
実装手順:
例:
<code class="go">type Shape interface { Area() float64 } type Square struct { side float64 } func (s *Square) Area() float64 { return s.side * s.side } type Circle struct { radius float64 } func (c *Circle) Area() float64 { return math.Pi * c.radius * c.radius } func main() { shapes := []Shape{ &Square{side: 5}, &Circle{radius: 5}, } for _, s := range shapes { fmt.Println("Area:", reflect.ValueOf(s).MethodByName("Area").Call([]reflect.Value{})[0].Float()) } }</code>
利点:
欠点:
以上がgolangでポリモーフィズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。