package main import "fmt" type Animal interface { //出生 SayHelloWord() //死亡 Godie() //生活 Live(food string) (Energy int) } type Pig struct { Name string } /*猪的指针实现了动物接口*/ //出生 func (p *Pig)SayHelloWord(){ fmt.Printf("%s哼哼哼\n",p.Name) } //死亡 func (p *Pig)Godie(){ fmt.Printf("%s啊啊啊我死了\n",p.Name) } //生活 func (p *Pig)Live(food string) (Energy int){ fmt.Printf("%s食用了一些%s,生产了%d卡路里\n",p.Name,food,1200) return 1200 } type Cat struct { Name string } /*猫的指针实现了动物接口*/ //出生 func (c *Cat)SayHelloWord(){ fmt.Printf("%s出生了\n",c.Name) } //死亡 func (c *Cat)Godie(){ fmt.Printf("%s:糟了life-=1\n",c.Name) } //生活 func (c *Cat)Live(food string)(Energy int){ fmt.Printf("铲屎官给%s大人服用了一些%s\n",c.Name,food) return 1 } func main031() { var animal Animal /*一个动物实例,既可以指向一只猪的指针,又可以指向一只猫的指针*/ //animal = &Pig{"佩奇"} animal = &Cat{"加菲"} /*无视当前的animal的具体类型,调度其动物的共性*/ animal.SayHelloWord() animal.Godie() animal.Live("饲料") } /*开一个肉联厂*/ func main() { animals := make([]Animal, 0) animals = append(animals, &Pig{"佩奇"}) animals = append(animals, &Cat{"加菲"}) for _,animal := range animals{ animal.Live("饲料") animal.Godie() } }
package main
import "fmt"
type Animal interface {
//出生
SayHelloWord()
//死亡
Godie()
//生活
Live(food string) (Energy int)
}
type Pig struct {
Name string
}
/*猪的指针实现了动物接口*/
//出生
func (p *Pig)SayHelloWord(){
fmt.Printf("%s哼哼哼\n",p.Name)
}
//死亡
func (p *Pig)Godie(){
fmt.Printf("%s啊啊啊我死了\n",p.Name)
}
//生活
func (p *Pig)Live(food string) (Energy int){
fmt.Printf("%s食用了一些%s,生产了%d卡路里\n",p.Name,food,1200)
return 1200
}
type Cat struct {
Name string
}
/*猫的指针实现了动物接口*/
//出生
func (c *Cat)SayHelloWord(){
fmt.Printf("%s出生了\n",c.Name)
}
//死亡
func (c *Cat)Godie(){
fmt.Printf("%s:糟了life-=1\n",c.Name)
}
//生活
func (c *Cat)Live(food string)(Energy int){
fmt.Printf("铲屎官给%s大人服用了一些%s\n",c.Name,food)
return 1
}
func main031() {
var animal Animal
/*一个动物实例,既可以指向一只猪的指针,又可以指向一只猫的指针*/
//animal = &Pig{"佩奇"}
animal = &Cat{"加菲"}
/*无视当前的animal的具体类型,调度其动物的共性*/
animal.SayHelloWord()
animal.Godie()
animal.Live("饲料")
}
/*开一个肉联厂*/
func main() {
animals := make([]Animal, 0)
animals = append(animals, &Pig{"佩奇"})
animals = append(animals, &Cat{"加菲"})
for _,animal := range animals{
animal.Live("饲料")
animal.Godie()
}
}
原文:https://www.cnblogs.com/yunweiqiang/p/11901923.html