zoukankan      html  css  js  c++  java
  • 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)
    }
  • 相关阅读:
    springMVC整合mybatis框架的项目起始配置
    springMVC解决JSON对象乱码问题
    SpringBoot将redis和spring-cache集成使用
    idea实现右侧预览
    List循环遍历时移出元素
    Mac下IDEA卡顿解决方案
    swagger中@ApiModelProperty中example属性对List的支持
    centos7安装PostgreSQL12
    mongo添加索引及索引相关方法
    Mac下安装Postgresql
  • 原文地址:https://www.cnblogs.com/yangxinpython/p/12031765.html
Copyright © 2011-2022 走看看