这是我参与「第五届青训营 」伴学笔记创作活动的第二天
第一个问题,什么是go.mod?
Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。
Go.mod其实就是一个Modules,关于Modules的定义为:
Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。Modules替换旧的基于GOPATH的方法,来指定使用哪些源文件。
Modules和传统的GOPATH不同,不需要包含例如src,bin这样的子目录,一个源代码目录甚至是空目录都可以作为Modules,只要其中包含有go.mod文件。
如何使用go.mod?
首先,必须升级go到1.11,目前版本是1.14,下面我以我自己升级演示
### 卸载旧版本,删除对应文件
brew uninstall -f go
### 更新一下brew
brew update
### 安装go
brew install go
go mod命令:
golang提供了 go mod命令来管理包。go mod 有以下命令:
GO111MODULE
GO111MODULE有三个值:off, on和auto(默认值)。
GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
- 当前目录在GOPATH/src之外且该目录包含go.mod文件
- 当前文件在包含go.mod文件的目录下面。
在项目中的使用
- 初始化项目
可以随便找一个目录创建项目
mkdir 文件名
cd 文件名
go mod init 文件名
查看一下 go.mod文件
module Gone
- 创建 main.go文件
package main
import (
"fmt"
"github.com/gohouse/gorose"
)
func main() {
fmt.Println("Hello, world!")
}
直接 go run hello.go
稍等片刻… go 会自动查找代码中的包,下载依赖包,并且把具体的依赖关系和版本写入到go.mod和go.sum文件中。
查看go.mod,它会变成这样:
module test
require (
github.com/gohouse/gorose v1.0.5
)
如此,依赖就搭建好了