使用方法
先将GO mudule置为有效:1
set GO111MODULE=on
运行:1
go mod init
会在项目的目录下生成一个go.mod的文件:1
2
3go.mod:
module Gin/learnGin/wamsGin
有一行内容,如上所示,其中Gin/learnGin/wamsGin
是项目在$GOPATH下的路径。
在运行go命令(‘go build’, ‘go test’, 甚至 ‘go list’)执行时,会自己去修改go.mod文件,执行后go.mod文件新内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15module Gin/learnGin/wamsGin
require (
github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3 // indirect
github.com/gin-gonic/gin v1.3.0
github.com/go-ini/ini v1.42.0
github.com/go-sql-driver/mysql v1.4.1 // indirect
github.com/golang/protobuf v1.3.1 // indirect
github.com/jinzhu/gorm v1.9.2
github.com/jinzhu/inflection v0.0.0-20180308033659-04140366298a // indirect
github.com/mattn/go-isatty v0.0.7 // indirect
github.com/ugorji/go/codec v0.0.0-20190320090025-2dc34c0b8780 // indirect
gopkg.in/go-playground/validator.v8 v8.18.2 // indirect
gopkg.in/yaml.v2 v2.2.2 // indirect
)
可见,go.mod中记录了依赖包及其版本号。
如果想更好的控制,可以修改 GO111MODULE 临时环境变量。
GO111MODULE的取值为off, on, or auto(默认值,因此前面例子里需要注意2个重点)。
- off: GOPATH mode,查找vendor和GOPATH目录
- on:module-aware mode,使用 go module,忽略GOPATH目录
- auto:如果当前目录不在$GOPATH 并且 当前目录(或者父目录)下有go.mod文件,则使用GO111MODULE,否则仍旧使用 GOPATH mode。
翻墙
go mod会去源地址下载使用包,某些包在GCE上,是下载不了的,这时候可以使用replace或者代理。
代理goproxy.io:
这是一个专门的go语言代理,只需要简单的设置:1
2
3
4
5Bash(MAC/Linux):
export GOPROXY=https://goproxy.io
PowerShell(Windows):
$env:GOPROXY = "https://goproxy.io"
replace方式
在go.mod中使用replace替换成github上对应的库:1
2
3
4
5replace (
golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac => github.com/golang/crypto v0.0.0-20180820150726-614d502a4dac
golang.org/x/net v0.0.0-20180821023952-922f4815f713 => github.com/golang/net v0.0.0-20180826012351-8a410e7b638d
golang.org/x/text v0.3.0 => github.com/golang/text v0.3.0
)
参考: