go 里面想要实现一个接口,只需要实现这个接口中的 所有方法即可。这种方式看起来很简洁,但是却不利于后期的维护。因为没有显式的指明实现的接口,一旦对接口做了修改,其他所有已经实现了该接口的类型都会失效。最近在 goframe 的终端工具 gf 的源码中看到了检查一个类型是否实现某个接口的方法,简单有效

1
var _ NewT = T{}

通过变量赋值,但忽略变量本身的方式来检查类型是否匹配,如果 NewT 类型实现了 T 接口的所有方法,赋值成功,否则编译阶段就会报错,IDE 也会及时的提醒你赋值有问题