Go Module
是从Go版本 1.11.1
开始官方提供的包管理工具,用于解决Go
项目的包管理及依赖,类似于PHP
的 composer
、Nodejs
的 npm
。本章节会对 Go Module
的一些常用的实用的命令/设置进行介绍,更详细的介绍请查看官方文档: https://github.com/golang/go/wiki/Modules
关于 go.mod
go.mod
是Go项目的依赖描述文件,该文件主要用来描述两个事情:
- 当前项目名(
module
)是什么。每个项目都应该设置一个名称,当前项目中的包(package
)可以使用该名称进行相互调用。 - 当前项目依赖的第三方包名称。项目运行时会自动分析项目中的代码依赖,生成
go.sum
依赖分析结果,随后go编译器会去下载这些第三方包,然后再编译运行。
我们可以看到之前的 hello world
项目下有一个自动生成的 go.mod
文件,其内容如下:
module hello
其中, hello
为当前项目的名称,在我们初始化项目的时候Goland IDE
自动帮助我们生成了该文件,默认情况下该module
的名称为目录的名称,该名称可以随意设置。
使用 go.mod
使用Goland IDE
设置
Goland
启用Go Module
特性在下载第三方依赖包时,您需要科学上网。笔者本地设置了一个环境变量
GOPROXY
用于科学上网拉取依赖:GOPROXY=https://goproxy.cn
如果您本地环境已经有
VPN
功能,那么可以忽略GOPROXY
的设置,可以添加direct
后缀表示不使用代理。GOPROXY=https://goproxy.cn,direct
其中
GOPROXY
请输入代理地址下载依赖包,常见的GOPROXY
反向代理地址有:https://goproxy.cn
https://goproxy.io
https://mirrors.aliyun.com/goproxy/
手动修改
go.mod
文件如下:module hello
require github.com/gogf/gf/v2 latest
增加
GoFrame
框架的依赖,其中latest
表示使用github.com/gogf/gf/v2
最新版本,IDE
将会立即去更新下载框架代码。成功后,IDE
将会修改go.mod
文件并生成go.sum
依赖分析文件。该go.sum
文件为该项目所有的第三方依赖,通常也应该推送到版本管理仓库中。随后
go.mod
文件被自动更新为:module hello
require github.com/gogf/gf/v2 v2.8.1
其中
v2.8.1
表示Go Module
检测到的最新框架版本。
使用命令行
打开
Terminal
,在项目根目录下执行:export GO111MODULE=on GOPROXY=https://goproxy.cn; go get -u github.com/gogf/gf/v2
该命令将会立即下载最新稳定版本的
GoFrame
框架。其中export GO111MODULE=on;
表示开启Go Module
特性(Go1.11.x
版本默认关闭,需要手动开启),export GOPROXY=https://goproxy.cn
表示使用代理下载,原因你懂的,并且也能极大提高依赖包下载速度。代理地址也可使用:https://goproxy.cn
https://goproxy.io
https://mirrors.aliyun.com/goproxy
随后
go.mod
文件内容被自动更新为:``` module hello
require github.com/gogf/gf/v2 v2.8.1
```
且生成了新的 `go.sum` 依赖分析文件。