go module学习

GO Modules

简介

go module 是官方出的包管理工具,打破了传统的GOPATH模式,使用go module 你可以在任何位置建立你的项目。

Quick Start

  • go mod init  #当前模块下初始化 生成.mod 文件
  • go mod  tidy #添加缺失的模块以及移除无用的模块
  • go mod  verify #验证依赖项是否达到预期的目的
  • go mod vendor #生成vendor文件夹
  • go mod download #下载依赖的包到本地缓存

 

  1. 首先将你的Go更新到1.11以上版本;
  2. 如果项目在GoPath目录下,设置系统环境变量GO111MODULE=on;
  3. 执行命令go mod init [模块名] 在当前目录下生成一个go.mod文件;
  4. 如果你工程中存在一些不能确定版本的包,那么生成的go.mod文件可能就不完整,因此继续执行下面的命令;
  5. 执行go mod tidy命令,它会添加缺失的模块以及移除不需要的模块。执行后会生成go.sum文件(模块下载条目)。添加参数-v,例如go mod tidy -v可以将执行的信息,即删除和添加的包打印到命令行;
  6. 执行命令go mod verify来检查当前模块的依赖是否全部下载下来,是否下载下来被修改过。如果所有的模块都没有被修改过,那么执行这条命令之后,会打印all modules verified。
  7.  执行命令go mod vendor生成vendor文件夹,该文件夹下将会放置你go.mod文件描述的依赖包,文件夹下同时还有一个文件modules.txt,它是你整个工程的所有模块。在执行这条命令之前,如果你工程之前有vendor目录,应该先进行删除。同理go mod vendor -v会将添加到vendor中的模块打印出来;

拉取私有库

     我们自己做的轮子,放在gitlab上的,需要特殊设置才能拉取。

  1. 配置git 将ssh请求转成http

git config --global url."git@git.17qq.me:".insteadOf "http://git.17qq.me/"

  1. 使用 insecure 选项

使用insecure 选项才能通过http访问

go get -insecure  git.17qq.me/wespy/go_libs

需要注意的点

1.go sdk为1.12 版本的需要将GOPROXY关掉或者设置GONOPROXY

If you have private code, you most likely should configure the GOPRIVATE setting (such as go env -w GOPRIVATE=*.corp.com,github.com/secret/repo), or the more fine-grained variants GONOPROXY or GONOSUMDB that support less frequent use cases. See the documentation for more details.(go1.12)

 

2.go sdk为1.13 版本的需要将GOPROXY设置为下面的形式

 go env -w GOPROXY=https://goproxy.cn,direct

Mod 文件

  • require 表示需要导入的包 包名后面跟的是版本号 (有indirect注释的代表间接依赖,没有的代表直接依赖)
  • replace 是需要替换的包
  • exclude 是不能引入的包
  • 使用 go get build run test等命令时。mod文件会自动修改

 

replace语法例子

replace golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac => github.com/golang/crypto v0.0.0-20180820150726-614d502a4dac

如何导入新包

  1. 修改mod文件 require部分
  2. go get

一些设置

关于go的环境设置可以通过下面的命令来查看

go env 

修改变量值命令

go env -w XXXX=XXXX // go env -w GO111MODULE=OFF

上面修改变量的值 只针对当前项目,不会修改全局配置。若想修改请使用下面的命令

export XXX=XXX //export GOPROXY=https://gocenter.io

 

如果GO111MODULE=OFF,则Go命令永远不会使用新的模块功能支持。相反,它会在vendor目录和GOPATH中查找依赖项,即我们现在将其称为“GOPATH模式”。

如果GO111MODULE=ON,那么Go命令使用go module,而不能使用GOPATH模式。

如果GO111MODULE=AUTO或未设置,当项目中有.mod文件时自动使用 go module 模式。

GOPROXY=off 表示“禁止从互联网下载任何依赖”,GOPROXY=direct 表示“依赖一律从源站下载”。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值