go module & proxy使用

go包管理工具,推荐使用 go modules
准备:GO111MODULE,默认值为 auto, 因国内原因最好配置好go proxy
如下:

export GO111MODULE=on

export GOPROXY=http://mirrors.aliyun.com/goproxy,direct

示例初始化gin工程:
cd go-gin-api && go mod init go-gin-api
输出:
go: creating new go.mod: module go-gin-api
这时目录会多出一个文件:go.mod

编码,添加项目依赖包:

package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })
    r.Run() // listen and serve on 0.0.0.0:8080
}

接下来,开始下载依赖包
go mod tidy
执行完成后, go.mod里会有gin的包

可能会遇到的问题:
1、目录中没发现 gin 包,包下载到哪了?
下载到了 GOPATH/pkg/mod 目录中。

2、GoLand 编辑器中关于 Gin 的引用变红了?
在这里编辑器需要设置一下:
Perferences->Go->Go Modules(vgo)
将 Enable Go Modules(vgo)integration勾上
Proxy输入:direct
将Vendoring mode也可勾选上
点击Apply, 如还是无作用
执行下面命令:
go mod vendor
命令是将项目依赖的包,放到项目的 vendor 目录中

go mod 常用命令

 go mod tidy     拉取缺少的模块,移除不用的模块.
 go mod vendor   将依赖复制到vendor下.
 go mod download 下载依赖包
 go mod verify   检验依赖
 go mod graph    打印模块依赖图
 更多命令,执行 go mod