Golang言語でポリモーフィズムを実装する方法

WJ
リリース: 2020-06-09 17:09:01
オリジナル
3955 人が閲覧しました

Golang言語でポリモーフィズムを実装する方法

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!