什么是接口?接口是抽象,是没有实现的方法集合,可以帮助我们隐藏具体实现,从而达到解耦的作用。
这篇文章将会聊一聊 Go 接口相关的内容。
隐式接口
在 Go 语言中定义接口需要使用 interface 关键字,而且只能定义方法,不能包含成员变量,例如:
1 | go复制代码type error interface { |
我们可以通过实现 Error() string
方法,从而间接地实现了 error
接口,而不需要显式地去实现接口:
1 | go复制代码type RPCError struct { |
结构体与指针
我们可以使用结构体或指针作为接口实现的接收者,但这两种类型是不一样的,而且两种实现是不可以同时存在的。
1 | go复制代码type Cat struct {} |
这里就会发生结构体指针实现的接口,在使用结构体初始化变量时,编译是不能通过的。
指针类型
Go 语言中有两种不同类型的接口
runtime.iface
表示带有一组方法的接口runtime.eface
表示不包含任何方法的接口 interface{}
注意了,
interface{}
类型并不是表示任意类型。
本文转载自: 掘金