概述
Go Modules 介绍
Modules是Go 1.11中新增的实验性功能,基于vgo演变而来,是一个新型的包管理工具。
Go 1.11 之前的包管理工具都是基于PATH
或者vendor
目录,并不能很好的解决不同版本依赖问题。Modules是在GOPATH
之外一套新的包管理方式。使用Modules可以完全不依赖GOPATH
。
注意:Go Modules 需要Go 1.11以上版本
使用指南
Example
- 在GOPATH之外创建一个目录
$ mkdir -p /tmp/scratchpad/hello
$ cd /tmp/scratchpad/hello
- 初始化Module
$ go mod init github.com/you/hello
go: creating new go.mod: module github.com/you/hello
- 编辑hello.go
package main
import (
"fmt"
"rsc.io/quote"
)
func main() {
fmt.Println(quote.Hello())
}
- 编译并运行
$ go build
$ ./hello
Hello, world.
注意: go build
会自动下载依赖包,而golang.org/x/...
之类的包需要翻墙,可以添加GOPROXY
环境变量设置代理:
export GOPROXY=https://goproxy.io
此时,go.mod
文件会自动更新,它包含项目所需的依赖项和对应版本号
$ cat go.mod
module github.com/you/hello
require rsc.io/quote v1.5.2
除了go.mod之外,go还维护一个名为go.sum的文件,其中包含特定模块版本的预期哈希值:
cat go.sum
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c h1:qgOY6WgZOaTkIIMiVjBQcw93ERBE4m30iBm00nkL0i8=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
rsc.io/quote v1.5.2 h1:w5fcysjrx7yqtD/aO+QwRjYZOKnaM9Uh2b40tElTs3Y=
rsc.io/quote v1.5.2/go.mod h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe+TKr0=
rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
go使用go.sum
文件确保这些模块的未来下载与第一次下载相同,以此确保项目所依赖的模块不会出现意外更改。
go.mod
和go.sum
都应检入版本控制。
日常WorkFlow
典型的日常工作流程可能是:
- 根据需要在
.go
代码中添加import
语句 - 标准命令(如
go build
或go test
)会根据需要自动添加新的依赖项(更新go.mod
并下载新的依赖项) - 需要特定版本的时候,可以使用
go get
指定特定版本如go get foo@v1.2.3
,go get foo@master
,go get foo@e3702bed2
,或者直接编辑go.mod
文件
常用的命令:
go list -m all
查看项目中所有直接和间接依赖关系go mod tidy
清除未使用的依赖项,并添加其他所需依赖项go mod vendor
将依赖复制到vendor目录下
最后
以上就是鲤鱼大树为你收集整理的Go Modules 使用指南的全部内容,希望文章能够帮你解决Go Modules 使用指南所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复