go-modules
use vscode
/* 设置 GO111MODULE GO111MODULE 有三个值:off, on和auto(默认值)。 |
golang 提供了 go mod 命令来管理包。
| 命令 | 说明 |
|---|---|
| download | download modules to local cache(下载依赖包) |
| edit | edit go.mod from tools or scripts(编辑go.mod |
| graph | print module requirement graph (打印模块依赖图) |
| init | initialize new module in current directory(在当前目录初始化mod) |
| tidy | add missing and remove unused modules(拉取缺少的模块,移除不用的模块) |
| vendor | make vendored copy of dependencies(将依赖复制到vendor下) |
| verify | verify dependencies have expected content (验证依赖是否正确) |
| why | explain why packages or modules are needed(解释为什么需要依赖) |
创建一个新项目
在 GOPATH 目录之外新建一个目录,并使用 go mod init 初始化生成go.mod 文件
go.mod文件一旦创建后,它的内容将会被go toolchain全面掌控。go toolchain会在各类命令执行时,比如go get、go build、go mod等修改和维护go.mod文件。
项目名 hello
go mod init hello |
执行 go run server.go 运行代码会发现 go mod 会自动查找依赖自动下载:
go module 安装 package 的原則是先拉最新的 release tag,若无tag则拉最新的commit,详见 Modules官方介绍。 go 会自动生成一个 go.sum 文件来记录 dependency tree:
goland
在 GoLand 2019.1.3 中使用 Go Modules 需要进行两个设置:
Preferences -> Go -> Go Modules (vgo),勾选 Enable Go Modules (vgo) integration 以启用 Go Modules,并在 Proxy 输入框中输入 https://goproxy.io。如图所示:
Preferences -> Go -> GOPATH,勾选上 Index entire GOPATH 以索引整个 GOPATH,不然无法导入包。如图所示:
进行如上设置后,就可以在导入不在缓存中的包时,点击 Sync packages of… 下载该包了: