go env -w GO111MODULE=on
go mod init xxx //xxx代表文件夹名
go module介绍
go module是go官方自带的go依赖管理库,在1.13版本正式推荐使用
go module可以将某个项目(文件夹)下的所有依赖整理成一个 go.mod 文件,里面写入了依赖的版本等 使用go module之后我们可不用将代码放置在src下
使用 go module 管理依赖后会在项目根目录下生成两个文件 go.mod(会记录当前项目的所依赖)和go.sum(记录每个依赖库的版本和哈希值)
GO111MODULE
GO111MODULE是 go modules 功能的开关
GO111MODULE=off,无模块支持,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on,模块支持,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
(1)当前目录在GOPATH/src之外且该目录包含go.mod文件,开启模块支持。
(2)当前文件在包含go.mod文件的目录下面。
//初始化模块: Go mod init <项目模块名称>//依赖关系处理,根据go.mod文件 Go mod tidy //将依赖包复制到项目的vendor目录 Go mod vendor //显示依赖关系 Go list -m all //显示详细依赖关系 Go list -m -json all //下载依赖 Go mod download [path@version]
国内代理设置
打开你的终端并执行
$ go env -w GO111MODULE=on $ go env -w GOPROXY=https://goproxy.cn,direct
完成。
打开你的终端并执行
$ export GO111MODULE=on $ export GOPROXY=https://goproxy.cn
或者
$ echo "export GO111MODULE=on" >> ~/.profile $ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile $ source ~/.profile
完成。
打开你的 PowerShell 并执行
C:\> $env:GO111MODULE = "on"C:\> $env:GOPROXY = "https://goproxy.cn"
或者
1. 打开“开始”并搜索“env” 2. 选择“编辑系统环境变量” 3. 点击“环境变量…”按钮 4. 在“<你的用户名> 的用户变量”章节下(上半部分) 5. 点击“新建…”按钮 6. 选择“变量名”输入框并输入“GO111MODULE” 7. 选择“变量值”输入框并输入“on” 8. 点击“确定”按钮 9. 点击“新建…”按钮 10. 选择“变量名”输入框并输入“GOPROXY” 11. 选择“变量值”输入框并输入“ 12. 点击“确定”按钮
完成。
你的代码永远只属于你自己,因此我们向你提供目前世界上最炫酷的自托管 Go 模块代理搭建方案。通过使用 Goproxy 这个极简主义项目,你可以在现有的任意 Web 服务中轻松地引入 Go 模块代理支持,要知道 Goproxy.cn 就是基于它搭建的。
创建一个名为 goproxy.go
的文件
package main import ( "net/http" "os" "github.com/goproxy/goproxy" ) func main() { http.ListenAndServe("localhost:8080", &goproxy.Goproxy{ GoBinEnv: append( os.Environ(), "GOPROXY=https://goproxy.cn,direct", // 使用 Goproxy.cn 作为上游代理 "GOPRIVATE=git.example.com", // 解决私有模块的拉取问题(比如可以配置成公司内部的代码源) ), ProxiedSUMDBs: []string{ "sum.golang.org https://goproxy.cn/sumdb/sum.golang.org", // 代理默认的校验和数据库 }, }) }
并且运行它
$ go run goproxy.go
然后通过把 GOPROXY
设置为 http://localhost:8080
来试用它。另外,我们也建议你把 GO111MODULE
设置为 on
。
就这么简单,一个功能完备的 Go 模块代理就搭建成功了。事实上,你还可以将 Goproxy 结合着你钟爱的 Web 框架一起使用,比如 Gin 和 Echo,你所需要做的只是多添加一条路由而已。更高级的用法请查看文档。