Go mod
Resource
- go mod使用: https://www.jianshu.com/p/760c97ff644c
发展历史
GOPATH
go env -w GO111MODULE="off" GOROOT=/usr/local/go GOPATH=/home/dev/project/go /* 按如下路径+导包路径寻找所需要的包 /usr/local/go/src/ */ go build main.go
go编译项目时,只会在GOROOT和GOPATH下找包,这限制了项目只能在GOPATH路径下(一般不放GOROOT).而且所有项目共用一份包,导致某些包需要升级后导致其它包引用失败;对于多个项目,只能引用某个包的同一版本
vendor
vendor将引用的包放在项目自身路径下,使得多个项目都有自己单独维护的包。项目只能在GOPATH路径下,但会在vendor目录下找包
mod
项目不再依赖GOPATH
生产中mod的运用
mode文件介绍
module gotest go 1.13 replace { } require ( )
导入同一个项目内部包
import gotest/models
导入外部项目本地包
一般来说,GO111MODULE=on情况下,go get会将包下载在$GOPATH/src/pkg/mod下
import 后面是路径字符串,前缀路径需要mod文件;
每个导入路径中只允许出现一个package name;
import "github.com/mod/cc"
internal包不能被导出
v2特性
多版本共存同一项目