Go语言之接口

2020-06-06  本文已影响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. 定义一个类型为接口类型,实际上可以赋值为任意实现类的对象
上一篇 下一篇

猜你喜欢

热点阅读