go 接口一系列的方法的集合

//接口 就是一系列的方法集合
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)
}
原文地址:https://www.cnblogs.com/yangxinpython/p/12031765.html