一、环境变量设置
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct
二、goland开启 go mod
三、go mod 使用
在go.mod文件中声明三方包地址&版本号即可,如下:
开发工具goland会自动解析go.mod文件,执行命令下载安装三方包。
go.mod 文件
go.mod 文件中可以使用到的语法关键词以及含义:
module: 定义当前项目的模块路径
go: 标识当前模块的 Go 语言版本,目前来看还只是个标识作用。
require: 说明 Module 需要什么版本的依赖。
exclude: 用于从使用中排除一个特定的模块版本。在实际的项目中很少被使用,故很少会显式的排除某个包的某个版本,除非我们知道某个版本有严重 bug。比如指令 exclude github.com/google/uuid v1.1.0,表示不使用 v1.1.0 版本。
创建module
go mod init 模块名
将在当前目录下创建一个新的Go模块,并生成一个go.mod文件来管理你的依赖项。
增加缺少的module&移除无用的module
go mod tidy
go mod tidy 命令只会修改 go.mod 文件,不会安装或更新包。如果你想确保使用的是最新的包版本,可以结合 go get -u 命令来更新包。
四、go get 使用
Go modules 模式下,使用 go get 命令,相关信息可以自动记录到 go.mod 文件中。
最新版本
go get -u github.com/nacos-group/nacos-sdk-go/v2
或
go get github.com/nacos-group/nacos-sdk-go/v2@latest
默认下载最新版本。
指定tag
go get -u github.com/nacos-group/nacos-sdk-go/v2@v2.2.2
执行日志:go: downgraded github.com/nacos-group/nacos-sdk-go/v2 v2.2.3 => v2.2.2
下载完成后,go.mod 文件内容自动变更为:
github.com/nacos-group/nacos-sdk-go/v2 v2.2.2 // indirect
// indirect ,表示该模块为间接依赖,也就是在当前应用程序中的 import 语句中,并没有发现这个模块的明确引用,如果没引用,我们提前先拉下来这个包,就会出现该注释,比如直接使用go get拉代码包,而不是 go build 让命令自动根据 go.mod 拉代码包。
指定分支的最新commit
拉取 master 分支的最新 commit
go get github.com/nacos-group/nacos-sdk-go/v2@master
go.mod 文件内容变更为:
github.com/nacos-group/nacos-sdk-go/v2 v2.2.4-0.20230901084646-9653ddea228a
更新
go get -u
-u(short for --update):告诉 go get 命令从远程仓库更新包到最新版本。如果你已经安装了某个包,但是有新版本可用,该命令将下载并安装最新版本。-u 标志是用于更新包的常见用法,它会忽略已安装包的版本,而是下载并安装最新的版本。
-u 标志将更新所有的依赖项,而不仅仅是直接导入的包。这可能会导致一些不可预期的变化,因此在使用该标志进行更新之前,建议先仔细阅读包的文档和变更日志,以了解更新可能带来的影响。