golang笔记05--go语言的依赖管理

1 介绍

本文继上文 golang笔记04–golang 面向对象, 进一步了解 go语言的依赖管理和相应注意事项。
具体包括 :依赖管理、GOPATH 和 GOVENDOR、go mode的使用、目录的整理等内容。

2 go语言的依赖管理

2.1 依赖管理

依赖管理的三个阶段包括: GOPATH,GOVENDRO, go mod。

2.2 GOPATH 和 GOVENDOR

GOPATH:
GOPATH 默认在~/go 目录下面;以下案例直接通过idea的go来新建项目,项目存放在 /tmp/gopathtest/src 下面。

mkdir /tmp/gopathtest
export GOPATH=/tmp/gopathtest
mkdir /tmp/gopathtest/src
在 idea 中设置project 的gopath为 /tmp/gopathtest, 然后在idea的cmd中go env 确认gopath已经被修改
idea cmd 中执行如下内容:
export GO111MODULE=off
go get -u go.uber.org/zap
/tmp/gopathtest/test01$ ls /tmp/gopathtest/src/
go.uber.org

vim zaptest.go
package main

import "go.uber.org/zap"

func main(){
	log, _ := zap.NewProduction()
	log.Warn("Warning test")
}
输出:
{"level":"warn","ts":1613297107.1154358,"caller":"test01/zaptest.go:7","msg":"Warning test"}

运行前需要在 Edit Configurations 的Go Build 中添加 Environment,值为 GO111MODULE=off,如下图所示:
在这里插入图片描述
GOVENDOR:
如果需要多个项目需要使用某个库的不同版本的情况,那么就可以使用govendor功能了,具体就是在每个项目下面新建一个vendor,然后将对应版本的库拷贝到vendor中,那么就会先去vendor下找对应的库文件,然后再去全局 gopath 的 src下找,最后会去非全局的 gopath 的 src下找。
在这里插入图片描述

2.3 go mod 的使用

go mod 相比gopath 和 govendor 更加高级,可以很方便的管理所需的库;
其由 go 命令统一管理,用户不必担心目录结构;
初始化直接使用 go mod init mode-name 即可;
追加依赖时直接使用 go get 即可;

在idea 中通过 go mod 新建 gomodtest项目,存储位置随意即可;
然后在cmd 中 go get -u go.uber.org/zap ,zap拉取完毕后可以发现 go.mod 中也更新了一些require的内容,而且会生成一个go.sum文件,如下图所示:
在这里插入图片描述

vim zaptest.go
package main

import "go.uber.org/zap"

func main(){
	log, _ := zap.NewProduction()
	log.Warn("Warning test")
}
输出:
{"level":"warn","ts":1613298806.0578163,"caller":"gomodtest/zaptest.go:7","msg":"Warning test"}

此时go 的 zap.NewProduction 会从go/pkg/mod/go.uber.org/zap@v1.16.0/logger.go 中查找,如下图。
在这里插入图片描述
使用 go mod 管理库后,如果项目需要更改依赖的版本,则直接在 go.mod 中修改require的库的版本号即可,在编译的时候会自动下载对应的版本。

如果旧项目迁移,在项目根目录下执行 go mod init 和 go build ./… 就会通过 go mod 的方式快速获取所有需要的依赖库。

2.4 目录的整理

对于项目目录和文件的规范性方面,可以通过 go build ./… 来检查是否有异常。
例如,同一个目录下多个文件都有package main,那么build会出错;
正确的做法是每个package 单独放在指定的目录中,如下图所示:
在这里插入图片描述

3 注意事项

  1. 使用gopath的时候,如果找不到指定的库,则会先到全局gopath的src下找,然后会在非全局的gopath的src下找。

4 说明

  1. 软件环境
    go版本:go1.15.8
    操作系统:Ubuntu 20.04 Desktop
    Idea:2020.01.04
  2. 参考文档
    由浅入深掌握Go语言 --慕课网
    go 语言编程 --许式伟
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

昕光xg

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

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

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

打赏作者

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

抵扣说明:

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

余额充值