作者:支着儿traister_107 | 来源:互联网 | 2023-09-18 22:44
- 接口是一种类型,它规定了变量有哪些方法
- go接口是满足隐式实现的(不用显式声明实现关系),即不用写implements声明
- 接口约束变量的行为,不约束属性.对于这样的场景,我不管变量的类型,只关心能调用它的哪些行为
- 当你看到一个接口类型的值时,你不知道它是什么,唯一知道的是通过它的方法能做什么?
接口引入示例:
type cat struct{}
type dog struct{}
func (c cat) speak(){
fmt.Println("瞄")
}
func (d dog) speak(){
fmt.Println("wang")
}
func da(d dog){
d.speak()
}
func main(){
var c1 cat
var d1 dog
da(c1)
da(d1)
}
type 接口类型名 interface{
方法名1(参数列表1)返回值列表1
xxx
}
type a interface{
xxx
}
- 方法名首字母是大写的,且这个接口类型名首字母也是大写时,方法可以被接口所在的包之外的代码访问
type Writer interface{
Write(p []byte)(n int,err error)
}
type Stringer interface{
String() string
}