前段时间自己写的项目试了一下 wire ,感觉还可以。我自己是 Java Go 都做的,不过最近 Java 做得更多。

全局变量的这个模式,最烦人的一点就是单元测试很难搞。很难 mock 。但是依赖注入这个就是说会多一些黑盒步骤,出问题的概率会多一点(不过可能手动依赖注入出问题的概率还要大点?)。

说到这里,我又想说一下 beego 的那个 router 的设计。他的 controller 传进去只是拿来做一个识别类型的作用,最后 beego 会根据这个类型,再根据字符串里的函数名,用反射重新创建对象然后搞一遍……完全杜绝了你搞依赖注入那一套。