インターフェース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
わんわん
にゃーご