【Golang系列】-接口

2022-03-18

接口

接口 会定义一些通用规范,只设计规范,而不实现规范
go语言的接口是一种新类型定义,他把所有具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口

语法格式和方法非常相似

接口的语法格式

//定义接口
type interface_name interface{
    method_name1[return_type]
    method_name2[return_type]
    method_name3[return_type]
    ...
}
//定义结构体
type struct_name struct{
    
}
//实现接口的方法
func (struct_name_variable struct_name)method_name1()[return_type]{
    //方法实现
}

在接口定义中定义,若干个空方法,这些方法具有通用性

接口示例:

定义一个usb接口,有读read和write两个方法,再定义一个电脑和一个手机来实现这个接口

package main

import "fmt"

//USB接口
type USB interface {
    read()
    write()
}

//Computer结构体
type Computer struct {
}

//Mobile结构体
type Mobile struct {
}

//Computer实现USB的接口方法
func (c Computer) read() {
    fmt.Println("computer read...")
}

func (c Computer) write() {
    fmt.Println("computer write...")
}

//Mobile实现USB的接口方法
func (c Mobile) read() {
    fmt.Println("moblie read...")
}

func (c Mobile) write() {
    fmt.Println("moblie write...")
}

func main() {
    c := Computer{}
    m := Mobile{}

    c.read()
    c.write()
    m.read()
    m.write()
}

结果:

computer read...
computer write...
moblie read...
moblie write...

实现接口必须实现接口中的所有方法
定义个openclose接口,里面有两个方法open和close 定义一个door结构体,实现其中一个方法

package main

import "fmt"

//定义openclose接口
type Openclose interface {
    open()
    close()
}

//定义door结构体
type Door struct {
}

//door实现接口方法
func (d Door) open() {
    fmt.Println("door open...")
}

func (d Door) close() {
    fmt.Println("door close...")
}

//调用
func main() {
    d := Door{}
    d.open()
    d.close()
}