14 空接口
func main() {
var e interface{} = 1
println(e)
}
空接口没有任何声明,所以所有类型都实现该接口。类似object单根祖先类型。
空接口就是什么方法的声明都没有,意味着任何一个类型都能实现空接口。在其他语言里都有一个类似Object单根类型,什么类型都可以往里丢。
14 匿名接口
type X int
func (X) A() { println("a") }
func main() {
var o X
x.A()
var e interface {
A()
} = o
e.A()
}
定义一个接口e,匿名接口通常出现在一个局部片段。所谓的匿名接口的一种用法。基于某种原因,对X进行抽象。一般不直接改类型,因为它是全局的,重构时在局部范围内构建e接口,验证会不会出错,逐步构造完以后再把它提升为全局的。好处在于避免带来很大范围内的关联效应,把它控制在一个很小的范围内。
匿名接口用下面方式比较多,定义一个类型。类型里有A和B和组装另外一个C类型现在不知道怎么替换,可以定义接口,里面有方法X和Y类似这样,这样好处只要符合接口都可以放进来,当然也可以单独定义。