chai2010/advanced-go-programming-book

4.1.2 疑问

swiftslee opened this issue · 2 comments

4.1.2
var _ HelloServiceInterface = (*HelloServiceClient)(nil)
为什么此处需要client满足这个接口呢 在本地编译试了下注释掉这句也能实现rpc
求解释~

当然不一定非要满足和服务器端一样的接口,像grpc的客户端和服务器端的接口就是2套。
让客户端满足这个接口,可以避免一些低级错误,在编译阶段就可以发现。

这句话的作者只是让编译器保证客户端代码满足接口。
这是编程中常用的技巧:通过断言不同的代码之间的关系,来尽量提前发现一些低级的问题。

当然不一定非要满足和服务器端一样的接口,像grpc的客户端和服务器端的接口就是2套。
让客户端满足这个接口,可以避免一些低级错误,在编译阶段就可以发现。

这句话的作者只是让编译器保证客户端代码满足接口。
这是编程中常用的技巧:通过断言不同的代码之间的关系,来尽量提前发现一些低级的问题。

谢谢~