接口是双方约定的一种合作协议。接口实现者不需要关心接口会被怎样使用,调用者也不需要关心接口的实现细节。
接口是一种 类型,也是一种抽象结构,不会暴露所含数据的格式、类型及结构。接口类型 是对其它类型行为的抽象和概括。
在 Golang 中,我们没有必要对于给定的具体类型定义所有满足的接口类型。要实现 Go 语言的接口,只需要实现接口里面所有的方法即可。
type InterfaceName interface{
func1 (param1) return1
func2 (param2) return2
...
}
在 Golang 中,通过 type 关键字将接口定义为自定义的接口名。接口的名字一般都是以 er 做为结尾,比如 Writer、Stringer 和 Closer。
声明一个 Golang 接口
package main
import (
"fmt"
)
// 声明一个 Golang 接口
type Personer interface {
Eat()
Study(course string)
}
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
var p Personer
fmt.Println("Personer =", p)
}
程序运行后,控制台输出如下:
我们定义了一个 Personer 接口,该接口有两个方法,一个是 Eat、另一个是 Study。其中,方法 Eat 没有任何参数和返回值,方法 Study 接受一个 string 类型的 参数。
最后,我们使用 var 定义了一个 Personer 类型的接口 p,并使用 print 打印最后定义的变量。
在 Golang 中,我们没有必要对于给定的具体类型定义所有满足的接口类型。要实现 Go 语言的接口,只需要实现接口里面所有的方法即可。
在 Golang 中,通过 type 关键字将接口定义为自定义的接口名。接口的名字一般都是以 er 做为结尾。Go 语言接口声明语法如下:
type InterfaceName interface{
func1 (param1) return1
func2 (param2) return2
...
}