• 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)
    }
  • 相关阅读:
    hdu 1028 Ignatius and the Princess III (n的划分)
    CodeForces
    poj 3254 Corn Fields (状压DP入门)
    HYSBZ 1040 骑士 (基环外向树DP)
    PAT 1071 Speech Patterns (25)
    PAT 1077 Kuchiguse (20)
    PAT 1043 Is It a Binary Search Tree (25)
    PAT 1053 Path of Equal Weight (30)
    c++ 常用标准库
    常见数学问题
  • 原文地址:https://www.cnblogs.com/yangxinpython/p/12031765.html
Copyright © 2020-2023  润新知