一.interface具有两个特点:
(1).它是方法声明的集合
(2).它是一种类型
二.它的作用主要有两个
1. 实现多态, 为不同类型但实现了相同方法的类型提供一个统一的接口,使之在函数传参时都统一的使用这一接口,在函数的内部使同样的方法名却因为属于不同的类型而输出了不同的结果。从而避免了拥有相同方法的不同类型只因为函数参数类型的不同而写不同的函数。
代码如下,在主函数进行调用时,传入的为S类型,接收的函数参数为I接口类型,在函数内部实现时也直接调用I接口内声明的函数,,这样就实现了多态
2 interface{}空接口
空接口不包括任何的method声明,所以任何的类型都实现了空interface,空interface可以转化为任意类型
如程序:
slice := make([]interface{}, 10)
map1 := make(map[string]string)
map2 := make(map[string]int)
map2["TaskID"] = 1
map1["Command"] = "ping"
map3 := make(map[string]map[string]string)
map3["mapvalue"] = map1
slice[0] = map2
slice[1] = map1
slice[3] = map3
一个可变数组slice中,存储了一个key为string类型,value为int类型的map,又存储了一个key为string类型,value为string类型的map,还存储了一个map的map,