下面golang教程栏目给大家介绍关于GO Modules的理解和遇到的问题。

使用的go版本是1.16.5,代码编辑器是GoLang2020.3.4,是在window10上面做GO Modules测试

为何会有GOModules的出现

GOROOT是指go的安装路径,GOPATH是指go的项目路径,在没有GOModules之前用的是GOPATH,由于GOPATH存在很多问题,从而使用GOModules进行代替

GOPATH存在的问题

GOPATH模式下没有版本控制的概念,具有致命的缺陷,至少会造成以下问题的产生:
1.在执行go get的时候,你无法传达任何的版本信息的期望,也就是说你也无法知道自己当前更新的是哪一个版本,也无法通过指定来拉取自己所期望的具体版本
2.在运行 Go 应用程序的时候,你无法保证其它人与你所期望依赖的第三方库是相同的版本,也就是说在项目依赖库的管理上,你无法保证所有人的依赖版本都一致
3.你没办法处理v1,v2,v3,等等不同版本的引用问题,因为GOPATH模式下的导入路径都是一样的,都是github.com/foo/bar。
4.Go 语言官方从 Go1.11 起开始推进 Go modules(前身vgo),Go1.13 起不再

关于GO Modules的理解和遇到的问题