Go Modules 介绍

Modules是Go 1.11中新增的实验性功能,基于vgo演变而来,是一个新型的包管理工具。

Go 1.11 之前的包管理工具都是基于PATH或者vendor目录,并不能很好的解决不同版本依赖问题。Modules是在GOPATH之外一套新的包管理方式。使用Modules可以完全不依赖GOPATH。

注意:Go Modules 需要Go 1.11以上版本

使用指南

Example

1、在GOPATH之外创建一个目录

$ mkdir -p /tmp/scratchpad/hello
$ cd /tmp/scratchpad/hello

2、初始化Module

$ go mod init github.com/you/hello
go: creating new go.mod: module github.com/you/hello

3、编辑hello.go

package main
import (
    "fmt"
    "rsc.io/quote"
)
func main() {
    fmt.Println(quote.Hello())
}

4、编译并运行

$ 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语言知识请关注PHP中文网go语言教程栏目。

以上就是Go Modules使用详解的详细内容,更多请关注php中文网其它相关文章!

声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除

  • 相关标签:Go
  • 程序员必备接口测试调试工具:点击使用

    Apipost = Postman + Swagger + Mock + Jmeter

    Api设计、调试、文档、自动化测试工具

    网页生成APP,用做网站的技术去做APP:立即创建

    手机网站开发APP、自助封装APP、200+原生模块、2000+映射JS接口按需打包

    • 上一篇:go build和go install的区别
    • 下一篇:go语言中函数与方法介绍

    相关文章

    相关视频


    • golang 空指针怎么检查
    • dede自带的google sitemap功能怎么...
    • Golang交叉编译简述
    • WinToGo是什么
    • Go Modules使用详解
    • go语言介绍和环境搭建2

    视频教程分类

    • php视频教程
    • html视频教程
    • css视频教程
    • JS视频教程
    • jQuery视频教程
    • mysql视频教程
    • Linux视频教程
    • Python视频教程
    • Laravel视频教程
    • Vue视频教程

    专题

    Go Modules使用详解