Go Module是从Go版本1.11.1开始官方提供的包管理工具,用于解决Go项目的包管理及依赖,类似于PHP的composer、Nodejs的npm。
关于go.mod
go.mod是Go项目的依赖描述文件,该文件主要用来描述两个事情:
- 当前项目名(module)是什么。每个项目都应该设置一个名称,当前项目中的包(package)可以使用该名称进行相互调用。
- 当前项目依赖的第三方包名称。项目运行时会自动分析项目中的代码依赖,生成go.sum依赖分析结果,随后go编译器会去下载这些第三方包,然后再编译运行。
我们将之前的hello world项目做一些改变,增加一个go.mod文件(也可以在项目根目录下使用 go mod init 项目名称命令初始化项目生成该文件),内容如下:
module my-hello
其中,my-hello为当前项目的名称,可以随意设置。
就这样简单便完成了项目的module初始化。
一般情况下,go.sum依赖分析文件应当被添加到版本管理中随着go.mod文件一起提交。
使用go.mod
使用go.mod意即用go.mod进行项目依赖管理。我们有两种go.mod的使用方式:IDE-vgo和命令行方式。以下我们通过下载使用GoFrame框架来演示如何使用这两种方式来管理依赖。
如果需要Goland IDE支持go.mod,必须要打开vgo的支持(包括代码依赖检测)。这两种使用方式的区别仅仅是下载依赖包的方式不同。
使用命令行
1.打开Terminal,在项目根目录下执行:
export GO111MODULE=on GOPROXY=https://goproxy.cn; go get -u github.com/gogf/gf
该命令将会立即下载最新稳定版本的GoFrame框架。其中 export GO111MODULE=on; 表示开启Go Module特性(Go 1.11.x版本默认关闭,需要手动开启),export GOPROXY=https://goproxy.cn 表示使用代理下载,原因你懂的,并且也能极大提高依赖包下载速度。代理地址也可使用:
- https://goproxy.cn
- https://goproxy.io
- https://mirrors.aliyun.com/goproxy
使用GoFrame
```go package main
import ( “fmt” “github.com/gogf/gf” )
func main() { fmt.Println(“hello GF”, gf.VERSION) }
```