这是我参加「第五届青训营 」伴学笔记创作活动的第 5 天
本文记录几个问题:
- go mod相关问题
- go的测试相关问题
go mod相关内容
go mod的相关内容分为以下几个小节:
go mod 的实质
项目通过go.mod管理项目依赖。go.mod文件存在于一个项目中,如下图是go.mod文件的内容:
module 后跟随的是依赖管理基本单元,也就是包名
require 后跟随单元依赖。分为直接依赖和间接依赖。 直接依赖指本项目中直接import的包。间接依赖指import的包import的包(递归下去)。 同时包版本按照v0.0.0 或者 v0.0.0-日期-commitID的方式列出,可以指定包的版本。
go mod 如何使用
通过go get 命令或者 go mod 命令管理依赖包
go get 包名@master 下载最新提交
go get 包名@update 默认下载
go get 包名@v0.0.1 下载指定版本
go mod init <包名> 初始化包,创建go.mod文件
go mod download 下载包到本地缓存
go mod tidy 增加需要的依赖,删除不需要的依赖
设置go mod和go proxy
go env -w GOBIN=/user/local/go/bin
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
GO111MODULE 有三个值:off, on和auto(默认值)。
GO111MODULE=off。项目寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on。go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto。默认值,根据当前目录来决定是否启用module功能。
go mod的疑难
- go mod 开启状态 如果要引用本地包怎么办
如果包在项目中,那么直接使用 "项目/包名"的方式进行引用即可
如果包不在项目中,那么要在项目的go.mod文件中添加如下内容。如果包的位置与项目平级,
--项目
--包
则加入
replace "包名"=>"../包名"
硬加载