//接口 就是一系列的方法集合 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) }