Gohack:Go模块依赖项的可变签出 新的Go模块系统很棒。 它确保可重复的确定性Go代码构建。 外部模块代码在本地缓存在只读目录中,这对于重现性很有用。 但是,如果您习惯于使用$GOPATH这个全局可变名称空间,那么就会有一个明显的问题:如果我对程序进行黑客攻击并且想要更改这些外部模块之一,该怎么办? 您可能想log.Printf一个偷偷摸摸的log.Printf语句,以了解某些内部数据结构的工作方式,或者尝试进行错误修复,看看它是否可以解决您的最新问题。 但是,由于所有这些外部模块都位于只读目录中,因此很难更改它们。 而且您真的不想更改它们,因为这将破坏Go工具在构建时进行的完整性检查