用匿名变量显式声明类型与接口的实现关系,有什么好处?

最近看了一些代码,发现了这样一种代码风格:

var (
    _ btreeIndex    = (*memIndex)(nil)
    _ btreeIterator = (*memBTreeIterator)(nil)
    _ indexIterator = (*xenumerator2)(nil)
    _ storage       = (*mem)(nil)
    _ temp          = (*memTemp)(nil)
)

左边的都是接口类型,右边的都是实现该接口的类型。这种写法除了能让阅读者知道类型与接口的实现关系之外,还有什么好处吗?

https://github.com/cznic 他的代码全是这样的风格,看他写的东西也挺厉害的,不像初学者。

已邀请:

astaxie - 创造、获取、分享、传播和应用Go

赞同来自: mintzhao jiazhoulvke

就如你说的这种写法主要是验证我们写的这些struct是不是已经实现了对应的接口。

这样写的好处主要是将来我们重构struct或者接口的时候,可以做到编译层验证的好处,有点类似单元测试的效果,但是这是编译器帮我们做了检测。

要回复问题请先登录注册