
go version
检测安装go env -w GOPROXY=https://goproxy.cn,direct
go env -w GO111MODULE=on
对于导入的包,编译器会首先在GOROOT
中寻找,随后会在项目所对应的GOPATH
中寻找,最后才是在全局GOPATH
中寻找,如果都无法找到,编译器将会报错。
GOPATH:把依赖包通过go get命令拉到本地GOPATH目录下,缺点是没法实现依赖包多版本管理。
go build
、go install
或 go get
等指令后,会将拉取的第三方xxx依赖包放在GOPATH/src
目录下GOPATH/bin
目录下GOPATH/pkg
下。DEP:将依赖包通过DEP命令打包到工程下的vendor目录。Shopee金融团队、字节跳动教育团队用的就是DEP
vendor
目录先寻找依赖包,如果没有找到,然后GOPATH
中查找,都没找到最后在 GOROOT
中查找。GoMod:将依赖包拉取到统一的pkg目录下,分版本存储。腾讯云用GoMod的团队会比较多。
GOMODULE
模式下所有依赖的包存放在GOPATH/pkg/mod
目录下GOPATH/bin
目录下GOPATH
路径之外,但要求项目中需要有go.mod
文件(该文件通过go mod init
命令初始化可以生成)。go get
- go mod init testname后,引用该模块下的package时,作为共同的前缀,同时也是模块的标识。
- 在项目的根目录中执行 go get 命令的话,go get 会同步更新 go.mod 和 go.sum 文件,go.mod 中记录的是依赖名及其版本,如:go.sum 文件中则会记录依赖包的哈希值(同时还有依赖包中 go.mod 的哈希值)
go mod tidy
拉取缺少的模块,移除不用的模块go mod vendor
将 GOPATH/src/pkg/mod 中的缓存包,复制到项目的 vendor 目录中,即使用每个项目使用自身包的模式,类似之前的 govendor 管理方式go mod download
下载依赖包go mod edit
编辑 go.mod 文件一般直接用 ide 编辑就行go mod graph
打印模块依赖图go mod verify
验证依赖是否正确go mod why
解释为什么需要依赖
设置了Go Modules后,不能与$GOPATH共存,所以把项目从$GOPATH中移出即可,否则会提示go.mod exists but should not
Go
版本顺序的API增量列表文件。这里所说的API包含公开的变量、常量、函数等。这些API增量列表文件用于 Go
语言API检查go
、godoc
、gofmt
godoc
命令启动一个Web程序展示这些文档Go
标准库后的所有归档文件(以.a
结尾的文件)。注意,你会发现其中有名称为linux_amd64
的文件夹,我们称为平台相关目录。这类文件夹的名称由对应的操作系统和计算架构的名称组合而成。通过go install
命令,Go
程序会被编译成平台相关的归档文件存放到其中Go
自身、Go
标准工具以及标准库的所有源码文件Go
本身的所有相关文件