//接口 就是一系列的方法集合
type Inner interface {
run()
speak()
}
type Piii struct {
name string
id int
}
type Diii struct {
name string
id int
bol bool
}
func(p Diii) run() {
fmt.Println("我是普通",p.name)
}
func(p Diii) speak() {
fmt.Println("我是会员",p.name)
}
func(p Piii) run() {
fmt.Println("我是普通",p.name)
}
func(p Piii) speak() {
fmt.Println("我是会员",p.name)
}
func main() {
pd := Piii{name:"腾讯"}
dd := Diii{name:"爱奇艺"}
//var d Inner
//d = pd
//d = dd
//fmt.Println(d)}
speak(dd)
speak(pd)}
//func speak(p Inner) {
// a:= p.(Diii)
// fmt.Println(a.bol)
// p.speak()
//}
func speak(p Inner) {
switch a:=p.(type) {
case Piii:
//判断好了,你是普通鸭子,把鸭子名字拿出来
fmt.Println("你是普通")
fmt.Println(a.name)
case Diii:
//判断好了,你是唐老鸭,把唐老鸭的wife拿出来
fmt.Println("你是会员")
fmt.Println(a.bol)
}}
//空接口
type E interface {
}
type Tduck struct {
name string
id int
bol bool
}
func main() {
test(1)
test("ssss")
test(Tduck{})
test(10.45)
}
func test(a interface{}) {
switch a.(type) {
case int:
fmt.Println("int")
case string:
fmt.Println("str")
case Tduck:
fmt.Println("Tduck")
default:
fmt.Println("default")
}
}
//空接口 继承多个接口
type E interface {
qqq()
}
type F interface {
www() int
}
type Inner struct {
name string
age int
}
func (a Inner) qqq() {
fmt.Println(a.name,a.age)
}
func (a Inner) www() int {
return a.age
}
func main() {
e:=Inner{name:"yangxin",age:10}
var s E = e
s.qqq()
e.qqq()
res := e.www()
fmt.Println(res)
}