美文网首页
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语言之接口

    接口定义     面向对象世界中的接口一般定义是“接口定义对象的行为”,它表示让制定个对象应该做什么,实现这种行为...

  • Go语言之接口

    接口 接口类型是对其他类型行为的概括与抽象。通过使用接口,我们可以写出更加灵活和通用的函数,这些函数不用绑定在一个...

  • Go语言之接口interfance

    一. 接口 1. 概述 接口类型具体描述了一系列方法的集合 接口类型是一个抽象的类型,不会暴露出他代表的对象内部值...

  • Go语言之空接口

    空接口 不包含任何的方法,正因为如此,所有的类型都实现了空接口,因此空接口可以存储任意类型的数值

  • Go语言之接口断言

    前景 因为空接口interface{}没有定义任何函数,因此Go中所有类型都实现了空接口。当一个函数的形参是int...

  • GO语言之接口嵌套

  • Go语言之Interface(一)

    Go语言之Interface(一) 什么是interface 在面向对象语言中接口是:接口定义了一个对象的行为,但...

  • Go语言之Interface(一)

    Go语言之Interface(一) 什么是interface 在面向对象语言中接口是:接口定义了一个对象的行为,但...

  • Go语言之初识接口

    1. 从Java说起接口 Java的接口是一种很好的东西,一定程度上解决了Java只允许单根继承的限制。我们可以认...

  • 第04天(面对对象编程)_04

    16_接口的继承.go 17_接口转换.go 18_空接口.go 19_类型断言:if.go 20_类型断言:sw...

网友评论

      本文标题:Go语言之接口

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