zoukankan      html  css  js  c++  java
  • 接口

    1.接口的定义

    接口是一系列方法的集合。接口指定了一个类型应该要具有的方法,但是由该类型决定如何去实现这些方法。

    2.鸭子接口

    package main
    
    import "fmt"
    
    # 定义了一个鸭子接口
    type Duck interface {
        run()
        speak()
    }
    
    #定义普通鸭子结构体
    type PDuck struct {
        name string
        age string
    }
    
    func (p PDuck)run()  {
        fmt.Println("我是普通鸭子,我名字叫",p.name,"我走路歪歪扭扭")
    }
    func (p PDuck)speak()  {
        fmt.Println("我是普通鸭子,我名字叫",p.name,"我嘎嘎说话")
    }
    
    #定义一个唐老鸭,实现鸭子接口
    type TDuck struct {
        name string
        age string
        wife bool
    }
    
    func (p TDuck)run()  {
        fmt.Println("我是普通鸭子,我名字叫",p.name,"我走路歪歪扭扭")
    }
    func (p TDuck)speak()  {
        fmt.Println("我是普通鸭子,我名字叫",p.name,"我嘎嘎说话")
    }
    
    func main() {
        pD:=PDuck{name:"水鸭子"}
        tD:=TDuck{name:"唐老鸭"}
        speak(tD)
        speak(pD)
    }
    func speak(p PDuck)  {
        p.speak()
    }
    func speak2(p TDuck)  {
        p.speak()
    }
    func speak(p Duck)  {
        p.speak()
    }
    
    #我想在函数中拿出唐老鸭的wife属性
    //func speak(p Duck)  {
    //    //类型断言,我断言你是TDuck类型,如果没有问题,转成TDuck类型
    //    a:=p.(TDuck)
    //    fmt.Println(a.wife)
    //    p.speak()
    //}
    
    func speak(p Duck)  {
        switch a:=p.(type) {
        case PDuck:
            //判断好了,你是普通鸭子,把鸭子名字拿出来
            fmt.Println("你是普通鸭子")
            fmt.Println(a.name)
        case TDuck:
            //判断好了,你是唐老鸭,把唐老鸭的wife拿出来
            fmt.Println("你是唐老鸭")
            fmt.Println(a.wife)
        }
    }

     3.空接口

      没有包含方法的接口称为空接口,空接口常表示为 interface{ }。由于空接口没有方法,因此所有类型都实现了空接口。

  • 相关阅读:
    count-and-say
    jump-game
    trapping-rain-water
    Java QueueDemo
    Java StackDemo
    swap-nodes-in-pairs
    php多维数组变成一维数组
    php获取客户端IP地址
    php根据随机数生成6位密钥
    Laravel ,YII,thinkphp 框架的区别
  • 原文地址:https://www.cnblogs.com/blue-tea/p/12037304.html
Copyright © 2011-2022 走看看