标签:mys 不能 name 形参 value who 不可 定义类 fun
package main
import "fmt"
type Hummaner interface {
sing() //声明一个方法,并没有实现
}
type Student struct {
id int
name string
}
type Myi int
type Mys string
func (s Mys) sing() {
fmt.Println("字符串在唱歌!!!")
}
func (i Myi) sing() {
fmt.Println("整型在唱歌!!!")
}
func (p Student) sing() {
fmt.Println("结构体在唱歌!!!")
}
//多态的实现
func WhoSing(h Hummaner) { //接口变量当形参
h.sing()
}
func main() {
//只能是自定义变量,或者结构体变量来调用接口中的方法
//go中基本基本类型变量不可以调用,接口中的方法
// var i int
// i.sing()//错误,即是定义相关类型的函数,也调用不了
/*
1.先定义一个接口变量,.然后定义一个结构体或自定义变量
2.把结构体或自定义变量赋值给接口变量
*/
var h Hummaner
var s Mys
h = s
h.sing() ///字符串在唱歌!!!
s.sing()
var i Myi
i.sing()
var p Student = Student{1, "zhao"}
p.sing()
//多态的实现
WhoSing(s)
WhoSing(i)
WhoSing(p)
//定义一个切片,其类型是结口
x := make([]Hummaner, 3)
x[0], x[1], x[2] = i, s, p
for _, value := range x {
value.sing()
}
//接口就是一组抽象类型的集合,他必须由其他非接口类型实现,而不能自我实现
//而且实现接口的接受者参数不能是基本类型,结构体或自定义类型皆可
}
标签:mys 不能 name 形参 value who 不可 定义类 fun
原文地址:https://www.cnblogs.com/zhaopp/p/11565491.html