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{ }。由于空接口没有方法,因此所有类型都实现了空接口。

  • 相关阅读:
    [LC] 252. Meeting Rooms
    [LC] 243. Shortest Word Distance
    [LC] 215. Kth Largest Element in an Array
    [LC] 8. String to Integer (atoi)
    [LC] 367. Valid Perfect Square
    [LC] 66. Plus One
    [LC] 7. Reverse Integer
    [GeeksForGeeks] Print all nodes that don't have sibling in a binary tree.
    [Coding Made Simple] Maximum Sum Subsequence Non-adjacent
    [Coding Made Simple] Longest Bitonic Subsequence
  • 原文地址:https://www.cnblogs.com/blue-tea/p/12037304.html
Copyright © 2011-2022 走看看