Golang入门到项目实战 | golang接口

Posted 一个热爱编程的通信人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang入门到项目实战 | golang接口相关的知识,希望对你有一定的参考价值。

接口像是一个公司里面的领导,他会定义一些通用规范,只设计规范,而不实现规范。

go语言的接口,是一种新的类型定义,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。

语法格式和方法非常类似。

接口的语法格式

/* 定义接口 */
type interface_name interface 
    method_name1 [return_type]
    method_name2 [return_type]
    method_name3 [return_type]
    ...
    method_namen [return_type]


/* 定义结构体 */
type struct_name struct 
    /* variables */


/* 实现接口方法 */
func (struct_name_variable struct_name) method_name() [return_type] 
    /* 方法实现 */

...
/* 实现接口方法 */
func (struct_name_variable struct_name) method_name() [return_type] 
    /* 方法实现 */

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

接口实例

下面我定义一个USB接口,有读read和写write两个方法,再定义一个电脑Computer和一个手机Mobile来实现这个接口。

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("mobile read...")


func (c Mobile) write() 
    fmt.Println("mobile write...")

测试

package main

import "fmt"

type USB interface 
    read()
    write()


type Computer struct 


type Mobile struct 


func (c Computer) read() 
    fmt.Println("computer read...")


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


func (c Mobile) read() 
    fmt.Println("mobile read...")


func (c Mobile) write() 
    fmt.Println("mobile write...")


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

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

运行结果

[Running] go run "d:\\SynologyDrive\\软件开发\\go\\golang入门到项目实战\\goproject\\360duote.com\\pro01\\test.go"
computer read...
computer write...
mobile read...
mobile write...

实现接口必须实现接口中的所有方法

下面我们定义一个OpenClose接口,里面有两个方法open和close,定义个Door结构体,实现其中一个方法。

package main

import "fmt"

type OpenClose interface 
    open()
    close()


type Door struct 


func (d Door) open() 
    fmt.Println("open door...")


func main() 
    var oc OpenClose
    oc = Door // 这里编译错误,提示只实现了一个接口

以上是关于Golang入门到项目实战 | golang接口的主要内容,如果未能解决你的问题,请参考以下文章

Golang入门到项目实战 | golang接口和类型的关系

Golang入门到项目实战 | golang接口值类型接收者和指针类型接收者

Golang入门到项目实战 | golang接口值类型接收者和指针类型接收者

Golang入门到项目实战 第一个golang应用

Golang入门到项目实战 golang匿名函数

Golang入门到项目实战 golang 函数