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

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

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 学習者の迅速な成長を支援します!