Go 语言中的 Moduels 管理(Let‘s Go 三十四)

Go 1.11以前使用包管理一直被开发者所诟病。既然GOPATH这种包管理引起了一线开发者的一片骂声,所以,Go官方体恤一线开发者对GOPATH这种包管理的情绪,一直致力于提供对一线开发者友好的包管理解决方案而奋斗。从最初的GOPATHGO VENDOR,再到现在最新的GO MODULES,这期间,Go 官方不免走了很多弯路,但展现在我们跟前的GO MODULES已是很像样的模块管理了。

在命令行窗口输入 go env命令,可以看到,多了个GO111MODULE变量,111是代表Go 1.11版本提出来的。

它有三个可选值:offonauto,默认值是auto

  1. GO111MODULE=off禁用模块支持,编译时会从GOPATHvendor文件夹中查找包。
  2. GO111MODULE=on启用模块支持,编译时会忽略GOPATHvendor文件夹,只根据 go.mod下载依赖。
  3. GO111MODULE=auto,当项目在$GOPATH/src外且项目根目录有go.mod文件时,自动开启模块支持。

GO111MODULEGo 1.13版本之后默认是开打的。

在这里插入图片描述

go mod 依赖管理

go mod不再依靠$GOPATH,以至于它可以不必在$GOPATH目录创建 Go 项目。

依次在该目录创建文件夹和main.go文件。

在这里插入图片描述

在这里插入图片描述

使用以下命令自动生成go.mod文件。

go mod init github.com/zhenqi/module-main

在这里插入图片描述

编辑main.go文件,输入以下内容。

package main

import (
	log "github.com/sirupsen/logrus"
)

func main(){
	log.WithFields(log.Fields{
		"animal": "walrus"
	}).Info("A walrus appears")
}

在这里插入图片描述

由于使用了第三方依赖库,需要先下载依赖库。

go get github.com/sirupsen/logrus

执行该语句会报错。

在这里插入图片描述

这是由于自Go 1.13以后的版本,GOPROXY默认值为proxy.golang.org,很不巧,这个地址在国内却无法访问啊!那该怎么办呢?好在国内大厂商提供了镜像,那便是 七牛云 推出的 goproxy.cn,好让国内开发者更好的使用GO MODULES

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

在这里插入图片描述

再次运行go get github.com/sirupsen/logrus 命令,可以看到,正在下载第三方依赖。

在这里插入图片描述

打开go.mod文件,明显追加了几行内容。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甄齐才

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值