- 背景:
go mod其实就是一个Modules,关于Modules的官方定义为:
Modules是相关Go包的集合,是源代码交换和版本控制的单元。简单的说就是一个类似索引文件,里面包含依赖哪些模块。
go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。
优点:
1、排除来GOPATH的无法有效的管理版本依赖,没有一个地方能够表明依赖包的具体版本号,无法形成有效的版本配套关系的缺点。
2、排除使用vendor这个特性,vendor它能够很好的管理工程,但是它会使得每一个工程都会有一个单独的vendor,非常浪费硬盘,可能导致ide直接卡死。
3、Go Modules相关是一个索引文件,不需要包含src,bin等子目录,只要目录下包含go.mod文件即可。
- 准备工作
Go语言设置GOPROXY,开启go module
go env -w GO111MODULE=on
配置goproxy,执行下面的命令
七牛云配置:
go env -w GOPROXY=https://goproxy.cn // Windows export GOPROXY=https://goproxy.cn // macOS 或 Linux
阿里配置:
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/ // Windows export GOPROXY=https://mirrors.aliyun.com/goproxy/ // macOS 或 Linux
注意:
Go 1.13设置了默认的GOSUMDB= sum.golang.org,是用来验证包的有效性。这个网址由于墙的原因可能无法访问,所以可以使用下面命令来关闭:
go env -w GOSUMDB=off // Windows export GOSUMDB=off // macOS 或 Linux
- 在项目的根目录 初始化go mod init XX名字
go mod init gobasic
- 在该目录下安装gin框架
go get -u github.com/gin-gonic/gin
安装成功后,gopath目录会生成pkg文件,里面包含下载的包
- 设置go modules启用状态,否则项目依赖无法关联情况
创建一个实例,使用gin框架输出
package main import ( "fmt" "github.com/gin-gonic/gin" "log" ) func main() { engine := gin.Default() engine.GET("/hello", func(c *gin.Context) { fmt.Println("请求路径", c.FullPath()) c.Writer.Write([]byte("Hi this is use gin frame \n")) }) if err := engine.Run(); err != nil { log.Fatalf(err.Error()) } }
标签:goproxy,Modules,GOPROXY,go,gin,mod From: https://www.cnblogs.com/personblog/p/16876932.html