Go 语言接口
在 Go 语言中,接口(Interface)是一种抽象类型,用于定义对象的行为。接口定义了一组方法的集合,但不包含具体的实现。通过接口,可以实现对象的多态性,使得不同类型的对象可以被统一地处理。
提示
本文所有示例代码可在 GitHub 下载。
接口的定义
接口由一组方法签名组成,方法签名定义了方法的名称、参数列表和返回值列表。接口的定义通常以 type
关键字和 interface
关键字为前缀,语法格式如下:
type interface_name interface {
method_name1 [return_type]
method_name2 [return_type]
method_name3 [return_type]
...
method_namen [return_type]
}
你可以在接口中定义任意数量的方法。
举个例子,下面我们定义一个名为 Shape
的接口,它包含了两个方法 Area()
和 Perimeter()
,分别用于计算形状的面积和周长。
type Shape interface {
Area() float64
Perimeter() float64
}
现在,你有了一个 Shape
接口。任何实现了 Area()
和 Perimeter()
方法的类型都可以被视为 Shape
接口的实现类型。
接口的实现
在 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_name1() [return_type] {
/* 方法实现 */
}
func (struct_name_variable struct_name) method_name2() [return_type] {
/* 方法实现*/
}
...
例如,如果有一个 Circle
类型,实现了 Shape
接口中定义的 Area()
和 Perimeter()
方法,那么 Circle
类型就是 Shape
接口的实现类型。