Go语言与包管理相关的一些问题结局:cannot f ind package " " in any of;Error loading workspace: err: exit status 1: stderr: build flag -mod=readonly only valid when using modules : packages.Load error
;
起因是,遇到一个问题:
经查阅资料,很可能跟包管理有关,之前有了解过忘了就再学一遍顺便解决问题。
学习资料:
- GO111MODULE 是个啥? - 知乎 (zhihu.com)
- go mod使用 - 简书 (jianshu.com)
所谓包管理,比如软件包管理,方便进行软件安装,升级,卸载等一些操作;
Go语言程序中经常会引入其他的package来使用;
import
go get$GOPATH/src
Go Modules
Go Modules
GO111MODULE = offGO111MODULE = onGo ModulesGO111MODULE = autoGo Modulesgo build$GOPATH/pkg/mod$GOPATH/srcgo run xxx.gogo mod
go.modgo mod
go mod命令
Go modGo Modulesgo getGOPATH
go mod
inittidyedit
初始化一个项目;
go mod init xxx
go.sum
go.mod
modulerequirereplaceexclude
解决问题
GO111MODULE=on
go listGO111MOUDLE=on
go env -w GO111MODULE=on
这样之后就好了。
GO111MODULE=on
macos,我只用zsh,zshrc中添加了,也source了;甚至bash_profile,profile也都添加了;为什么go env中还需要再设置一遍?很奇怪!