Golang 言語でポリモーフィズムを実装するにはどうすればよいですか?
C のポリモーフィズムは、C の 3 つの主要な機能の 1 つです。では、golang でポリモーフィズムを実装するにはどうすればよいでしょうか?
golang にはインターフェース型のインターフェースがあります。インターフェース型を実装している限り、どの型にも値を割り当てることができます。インターフェース型が空の場合、すべての型がそれを実装します。空いているからです。
golang のポリモーフィズムは、インターフェイス タイプを使用して実装されます。つまり、インターフェイス タイプを定義し、実装されるいくつかの関数を宣言します。必要なのは宣言のみであり、実装ではないことに注意してください。
例如:type People interface { // 只声明 GetAge() int GetName() string }
その後、あなたは構造体を定義して、その中で宣言されている関数を実装することができ、構造体オブジェクトをインターフェイス型に割り当てることができます。
テスト プログラムを作成しました:
package main import ( "fmt" ) type Biology interface { sayhi() } type Man struct { name string age int } type Monster struct { name string age int } func (this *Man) sayhi() { // 实现抽象方法1 fmt.Printf("Man[%s, %d] sayhi\n", this.name, this.age) } func (this *Monster) sayhi() { // 实现抽象方法1 fmt.Printf("Monster[%s, %d] sayhi\n", this.name, this.age) } func WhoSayHi(i Biology) { i.sayhi() } func main() { man := &Man{"我是人", 100} monster := &Monster{"妖怪", 1000} WhoSayHi(man) WhoSayHi(monster) }
実行結果:
Man[私は人間です、100] Sayhi
Monster[Monster、 1000]sayhi
関連する推奨事項:Golang チュートリアル
以上がGolang言語でポリモーフィズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。