はじめに
ポリモーフィズムとは、メッセージが複数の形式で表示される能力です。ポリモーフィズムは、オブジェクト指向プログラミングの重要な特徴の1つとされ、実行時またはコンパイル時に達成することができます。Golang
は軽量オブジェクト指向言語であり、インターフェースを通じてのみポリモーフィズムをサポートしています。
Go言語では、主にインターフェースを使用してポリモーフィズムが実現されます。インタフェースに定義された関数を実装する型は、インタフェースとして定義された型になります。これがGoでポリモーフィズムを実現可能にするプロパティです
説明
ポリモーフィズムを実現するために、Goではインタフェースが使用されます。以下は、ポリモーフィズムの例です。
package main
import "fmt"
type Animal interface {
Speak() string
}
type Dog struct {}
func (d Dog) Speak() string {
return "Woof!"
}
type Cat struct {}
func (c Cat) Speak() string {
return "Meow"
}
type Cow struct {}
func (c Cow) Speak() string {
return "Moo"
}
func main() {
animals := []Animal{Dog{}, Cat{}, Cow{}}
for _, animal := range animals {
fmt.Println(animal.Speak())
}
}
この例では、Animalインタフェースが定義されており、Speak()メソッドを持っています。Dog、Cat、およびCow構造体はすべて、このメソッドを実装しています。そのため、これらの構造体はすべてAnimal型として扱うことができます。
最後に、forループ内で各動物のSpeakメソッドが呼び出されます。これにより、「Woof!」、「Meow」、「Moo」という異なる出力が得られます。