美文网首页
Go语言之接口

Go语言之接口

作者: 测试探索 | 来源:发表于2020-06-06 16:23 被阅读0次
    接口定义

        面向对象世界中的接口一般定义是“接口定义对象的行为”,它表示让制定个对象应该做什么,实现这种行为的方法(实现细节)是针对对象的。
    在Go中,接口是一组方法签名,当类型为接口中对的所有方法提供定义时,它被称为实现接口,它与oop非常相似。接口指定了类型应该具有的方法,类型决定了如何实现这些 方法
        它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口,接口定义了一组方法,如果某个对象实现了某个接口的所有方法,则此对象就实现了该接口。

    接口的的定义语法
    //定义接口
    type interface_name interface {
        method_name1 [return_type]
        method_name2 [return_type]
    }
    
    //定义结构体
    type struct_name struct{
           /* variables*/
    }
    
    //接口实现方法
    func (struct_name_variable struct_name) method_name1() [return_type]{
           /*方法实现*/
    }
    
    package main
    
    import "fmt"
    
    func main(){
        /*
        接口:interface
        在go语言中,接口是一组方法签名
        当某个类型为整个接口中的所有方法提供了方法的实现,它被称为实现接口
        go语言中,接口和类型的实现关系,是非嵌入式
            1.当需要接口类型的对象时,可以使用任意实现类对象代替
            2.接口对象不能访问实现类中的属性
        */
    
        //创建Mouse类型
        m1 := Mouse{"罗技小红"}
        fmt.Println(m1.name)
    
        //创建FlashDisk
        f1 := FlashDisk{"闪迪64G"}
        fmt.Println(f1.name)
    
        testInterface(m1)
            
             var usb USB
             usb = m1
             usb.start()
             usb.end()
    
    }
    
    //定义接口
    type USB interface {
        start() //USB设备开始工作
        end()  //USB设备结束工作
    }
    
    //2.实现类
    type Mouse struct {
        name string
    }
    
    type FlashDisk struct {
        name string
    }
    
    func (m Mouse) start(){
        fmt.Println(m.name,"鼠标,准备就绪,可以开始工作了,点点点。。。")
    }
    
    func (m Mouse) end(){
        fmt.Println(m.name,"结束工作,可以安全退出。。。")
    
    }
    
    func (f FlashDisk) start(){
        fmt.Println(f.name,"准备开始工作了,可以进行数据的存储。。。")
    
    }
    
    func (f FlashDisk) end(){
        fmt.Println(f.name,"可以弹出。。。")
    }
    
    //测试方法
    func testInterface(usb USB){
        usb.start()
        usb.end()
    
    }
    
    //结果
    罗技小红
    闪迪64G
    罗技小红 鼠标,准备就绪,可以开始工作了,点点点。。。
    罗技小红 结束工作,可以安全退出。。。
    
    
    
    image.png
    多态

    概念:一个事务的多种形态
    go语言通过接口模拟多态
    就一个接口的实现:
      1. 看成实现本身的类型,能够访问实现类中的属性和方法
      2. 看成是对应的接口类型,那就只能访问接口中的方法

    接口的用法
    1. 一个函数如果接受接口类型作为参数,那么实际上可以传入该接口的任意实现类型对象作为参数。
    2. 定义一个类型为接口类型,实际上可以赋值为任意实现类的对象

    相关文章

      网友评论

          本文标题:Go语言之接口

          本文链接:https://www.haomeiwen.com/subject/gcvizhtx.html