職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

Go言語のインターフェース2

2023年03月20日 | GO言語
インターフェース2

【開発環境】
OS:Win11(64ビット)
go version go1.19.4 windows/amd64
VSCode1.72.2、及びコマンドプロンプト

【インターフェースの役目】
インターフェースの役目とは、あくまでも実装すべきメソッドを指定すること!
//Animal インターフェース
type Animal interface {
Cry()
}
と、宣言したら
//犬の構造体
type Dog struct{}
func (d *Dog) Cry() {
fmt.Println("わんわん")
}
// 猫の構造体
type Cat struct{}
func (c *Cat) Cry() {
fmt.Println("にゃーご")
}
のように、Cry()メソッドを実装する事。

◆更に、スライドを使って犬と猫をまとめて鳴かせるには
//犬と猫を作る
dog := new(Dog)
cat := new(Cat)
//犬と猫のスライスを作る
animals := [...]Animal{dog,cat}
for _, a := range animals {
a.Cry()
}

【インターフェースを引数にして関数を定義する】
// animal2.go
package main

import "fmt"

//Animal - 動物のインターフェース
type Animal interface {
Cry()
}

//Dog - 犬の構造体
type Dog struct{}

//Cry - 犬が吠える
func (d *Dog) Cry() {
fmt.Println("わんわん")
}

//Cat - 猫の構造体
type Cat struct{}

//Cry - 猫が鳴く
func (c *Cat) Cry() {
fmt.Println("にゃーご")
}

//Cry - 動物がなく
func Cry(a Animal) {
a.Cry()
}


func main() {
//犬と猫を作る
dog := new(Dog)
cat := new(Cat)
//犬と猫がなく
Cry(dog)
Cry(cat)
}
・実行
PS D:\GO言語\サンプルプログラム\Go-7\インターフェース> go run animal2.go
わんわん
にゃーご

コメント    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« go言語のインターフェース | トップ | interface{}型--型アサーション »
最新の画像もっと見る

コメントを投稿

GO言語」カテゴリの最新記事