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 语言中的 Moduels 管理(Let‘s Go 三十四)

; go mod 依赖管理

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

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

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

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

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

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

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

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

package main

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

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

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

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

go get github.com/sirupsen/logrus

执行该语句会报错。

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

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

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

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

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

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

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

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

Original: https://blog.csdn.net/coco2d_x2014/article/details/127813764
Author: 甄齐才
Title: Go 语言中的 Moduels 管理(Let‘s Go 三十四)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/654063/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球