go 编译期判断类型是否实现接口
在看一些源码的过程中,发现一些如下的写法:
1 | // var _ Interface = (*Type)(nil) |
其中 FastInvoker 是一个 interface,而
LoggerInvoker 实现了 FastInvoker 的方法。
这样看起来没什么作用,但是却可以帮助我们在编译期就发现
LoggerInvoker 是否实现了 FastInvoker 接口,
因为我们这样写了之后,编译器会去检查,如果 LoggerInvoker
没有实现 FastInvoker 就会报错了。
这样我们就可以在编译的时候发现代码潜在的问题。