Go语言的接口是一种抽象的类型。
不用去理解那么复杂抽象的解释,就记住Go语言的接口是一种类型就行。
Go语言的接口是一种类型就行
Go语言的接口是一种类型就行
Go语言的接口是一种类型就行
接口定义格式
type 接口名称 interface{
方法名1( 参数列表1 ) 返回值列表1
方法名2( 参数列表2 ) 返回值列表2
…
}
- 接口名称一般会在后面加上er,如writer。接口名最好要能突出该接口的类型含义。
- 方法名首字母大写可被其他包调用。
- 参数类表和返回值裂变的名称可以省略。
//接口定义示例
type writer interface{
Student(string) error
}
接口的简单使用
type sayer interface{
say()
}
type cat struct{}//直接定义一个空struct结构体
func (c cat)say(){//定义一个接收者,定义say方法
fmt.Println("喵喵喵")
}
func main(){
var s sayer //实例化sayer接口
cat := cat{} // 实例化一个cat结构体
s = cat // 将结构体赋值给接口
s.say()//调用接口方法
}
空接口:没有定义任何方法的接口,可以接收任何类型。大白话就是万能类型,可以接收int,string等任何类型。
var x interface{}
x = "你好吗 how are you"
fmt.Println(x)
x = 19
fmt.Println(x)
断言
格式:x.(T)
x :interface变量
T:断言,判断x的类型
var x interface{}
x = "Hello 沙河"
v, ok := x.(string)
if ok {
fmt.Println(v)
} else {
fmt.Println("类型断言失败")
}