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接口值类型接收者和指针类型接收者