Go包管理
2021/10/24 6:09:42
本文主要是介绍Go包管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
十、Go包管理
1 使用GO111MODULE
在1.11版本后,推出 modules 机制,简称 mod,用于包管理。
使用 Go modules 之前需要环境变量 GO111MODULE,命令行输入go env
可以 打印go的环境信息。
- GO111MODULE=off: 不使用 modules 功能,查找vendor和GOPATH目录
- GO111MODULE=on: 使用 modules 功能,不会去 GOPATH 下面查找依赖包。
- GO111MODULE=auto: Golang 自己检测是不是使用 modules 功能,如果当前目录不在$GOPATH 并且 当前目录(或者父目录)下有go.mod文件,则使用 GO111MODULE, 否则仍旧使用 GOPATH mode
我们这里将GO111MODULE设置为on
set GO111MODULE=on //windows export GO111MODULE=on //linux
我们在gopath之外,新建一个demo文件夹作为我们的项目根目录
切换到根目录下执行命令,然后会生成一个 go.mod
go mod init demo // 这里的demo换成你文件夹的名字
这里比较关键的就是这个 go.mod 文件,这个文件中标识了我们的项目的依赖的 package 的版本。执行 init 暂时还没有将所有的依赖管
理起来。我们需要将程序 run 起来(比如执行 go run/test),或者 build(执行命令 go build)的时候,才会触发依赖的解析。
这里我们下载一个第三方包作为测试:
go get github.com/beego/beego/v2@v2.0.0
当开启了mod模式之后,包不会下载到src目录下
go.mod文件内会有 module 和 require 模块,除此之外还可以包含 replace 和 exclude 模块。
下载的 package 并不是直接存储到 GOPATH/src,而是存储到 GOPATH/pkg/mod 下面。
// go.mod module demo go 1.17 require github.com/beego/beego/v2 v2.0.0 // indirect
有indirect注释的代表间接依赖,没有的代表直接依赖,这里是版本号+时间戳+hash
2 自己写的包如何导入
直接在go.mod中写包名即可
3 go vender
1.5 版本推出了 vendor 机制。所谓 vendor 机制,就是每个项目的根目录下可以有一个 vendor 目录,里面存放了该项目的依赖的 package。go build
的时候会先去 vendor 目录查找依赖,如果没有找到会再去 GOPATH 目录下查找。
go mod vendor
4 使用代理GoProxy
有些 Golang 的 package 在国内是无法直接 go get 的。
GoProxy 相当于官方提供了一种 proxy 的方式让用户来进行包下载。要使用 GoProxy 只需要设置环境变量 GOPROXY
即可。目前公开的
GOPROXY 有:
- goproxy.io
- goproxy.cn: 由七牛云提供,参考 github repo
这里介绍Goland使用代理:
网址:https://goproxy.cn/
进入GoLand--->settings--->Go--->Go modules
完成。
这篇关于Go包管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享