- 接口
- 空接口
- 接口嵌套
- 接口断言
接口
* 接口,方法的集合,interface来定义
//定义接口 interface ,方法的集合type USB interface{input() //输入方法output() //输出方法}//结构体type mouse struct{name string}type keyBoard struct{name string}//结构体实现了接口中的所以方法代表实现了这个接口,否则不算实现接口func (m mouse) output(){fmt.Println("output")}func (m mouse) input(){fmt.Println("input")}func (k keyBoard) output(){fmt.Println(k.name,"output")}func (k keyBoard) input(){fmt.Println(k.name,"input")}//接口调用测试func test(u USB){u.input()u.output()}func main() {m:=mouse{name: "雷蛇"}test(m)k:=keyBoard{name: "罗技"}test(k)}
空接口
* 不包含任何方法,所有结构体默认实现了空接口,空接口可以存储任何类型
//定义空接口type A interface{}//结构体type dog struct{name string}type cat struct{name string}//测试接口func test(a A){fmt.Println(a)}func main() {//空接口可以接收任意类型var a A=dog{name: "a"}var b A=cat{name: "b"}var c A=1var d A="qwe"fmt.Println(a)fmt.Println(b)fmt.Println(c)fmt.Println(d)}
接口嵌套
* 接口中嵌套接口
//接口type A interface{test1()}type B interface{test2()}type C interface{//导入A、B接口ABtest3()}//结构体,实现C接口type dog struct{}func (d dog) test1(){fmt.Println("test1")}func (d dog) test2(){fmt.Println("test2")}func(d dog) test3(){fmt.Println("test3")}func main() {//dog有4个形态:dog,A,B,Cvar d dog =dog{}d.test1()d.test2()d.test3()}
接口断言
* 检查接口类型的变量是不是符合期望值* 被断言的对象必须是接口类型* 通过switch i .(type) case 来判断
//接口type A interface{}func testA(i interface{}){//switct i.(type) 断言switch i.(type){case string:fmt.Println("string")case int:fmt.Println("int")case A:fmt.Println("A")case nil:fmt.Println("nil")case interface{}:fmt.Println("interface{}")default:fmt.Println("未知")}}func main() {testA("string")testA(1)var a Avar a1 A=1testA(a)testA(a1)}
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。







评论