「Go语言基础」| 青训营笔记

68 阅读2分钟

这是我参加「第五届青训营 」伴学笔记创作活动的第 5 天

本文记录几个问题:

  • go mod相关问题
  • go的测试相关问题

go mod相关内容

go mod的相关内容分为以下几个小节:

go mod 的实质

项目通过go.mod管理项目依赖。go.mod文件存在于一个项目中,如下图是go.mod文件的内容:

image.png

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的疑难

  1. go mod 开启状态 如果要引用本地包怎么办

如果包在项目中,那么直接使用 "项目/包名"的方式进行引用即可

如果包不在项目中,那么要在项目的go.mod文件中添加如下内容。如果包的位置与项目平级,

--项目
--包

则加入

replace "包名"=>"../包名"

硬加载