Golang 接口 (interface) 用法介绍

本文介绍了Golang接口(interface)的用法,包括接口的定义、使用,以及接口类型转换。强调了接口作为方法收束器和数据承载者的角色,并通过示例代码说明了接口实现和类型断言。文章提醒开发者,接口应根据需求合理使用,避免过度设计。
摘要由CSDN通过智能技术生成

Golang interface 用法

作者:闪电豹猫 转载注明出处

1. 接口 (interface) 介绍

接口是 Go 语言提供的数据类型之一,它把所有具有共性的方法 (注意与函数区别开) 定义在一起,任何其它类型只要一一实现这些方法的话,我们就称这个类型实现了这个接口。Go 语言的接口与 C++ 的虚函数有共通之处,提高了语言的灵活性的同时也弥补了语言自身的一些不足。

Go 语言的接口与其它面向对象语言的接口不同,Go 的接口只是用来对方法进行一个收束,而正是这个收束,使得 Go 这个面向过程的语言拥有了面向对象的特征。

一般来说,Go 接口的主要功能有:

  1. 作为方法的收束器,进行具有 “面向对象程序设计特色” 的程序设计。
  2. 作为各种数据的承载者,可以用来为函数接收各类不同数量的函数参数,这也是 Go 提倡的接口编程。

2. 接口的定义和使用

2.1 定义

比如一个完整方法的接口的定义:

// 这是接口,接口内只有方法的定义,没有具体实现
type 接口类型名 interface {
	方法名1( 参数列表1 )  返回值列表1
	方法名2( 参数列表2 )  返回值列表2
	...
}

// 定义结构体
type 结构体名 struct {
	变量名1 类型1
	变量名2 类型2
	...
}

// 实现接口方法
func ( 结构体变量1 结构体名 ) 方法名1( 参数列表1 ) 返回值列表1 {
	//方法实现
}
func ( 结构体变量2 结构体名 ) 方法名2( 参数列表2 ) 返回值列表2 {
	//方法实现
}
func ( 结构体变量n 结构体名 ) 方法名n( 参数列表n ) 返回值列表n {
	//方法实现
}

在实践中,我们一般将接口命名为 “什么什么er”,比如写操作的接口可以叫Writer,读取字符串的接口可以叫做StringReader。和变量的命名规则一样,接口名的命名也是不能以数字开头、只允许出现一种特殊字符_,开头大写则包外可见,开头小写则方法在包外不可见等等。

对于接口内的方法名,也是一样的。只有接口名和方法名的首字母都大写,才可以在包外调用这个接口的这个方法。

2.2 使用

一个接口只要全部实现了接口中声明的方法,那么就是实现了这个接口。换句话讲,接口就是一个需要具体实现的方法的列表。
下面给出一个示例代码

// 定义接口
type Canteen interface {
	MakeRice()
	MakeNoodles()
}

// 定义结构体
type ZhuYuan struct {}
type HaiTang struct {}
type DingXiang struct {}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值