go语言包管理
要构建Go语言的编译环境,首先得安装Go语言的编译工具
官方路径:https://golang.google.cn/dl/,一般是访问不了,使用国内网站:https://studygolang.com/dl
然后需要设置环境变量
在windows下需要将go编译器的安装路径加到Path,还要设置GOROOT和GOPATH变量,分别对应GO安装目录和项目下的src目录。
GO包管理一般有两种方式:GOPATH方式和GO Module方式
GOPATH方式是GO原生支持的方式,一般要求项目下包含三个目录:
bin:放置可执行文件
pkg:放置编译生成的lib包
src:放置源码,go编译查找源文件目录
例如项目结构如下:
一般源文件的包名就是所在的文件夹名,如果在main函数中要调用algorithms中的qsort中的函数,只需要import文件即可:
如果需要导入github上的开源代码,直接import项目的url链接即可,并且需要go get导入到本地路径,go会自动在src目录下生成github.com目录。
Go Module管理方式
Go Module方式是golang1.11新增的特性,直接基于模块管理,而不是基于固定目录
要使用Go Module,需要先设置go变量GO111MODULE=on
要注意Go Module方式跟GOPATH方式不兼容,项目路径不能再GOPATH里。
在项目中不需要src目录,使用go mod init建立mod管理,会自动在项目下生成go.mod文件,如果需要依赖第三方代码,除了在项目中import之外,还需要使用go mod download下载包
go.mod文件示例:
go mod常用命令:
命令 | 说明 |
download | download modules to local cache(下载依赖包) |
edit | edit go.mod from tools or scripts(编辑go.mod |
graph | print module requirement graph (打印模块依赖图) |
init | initialize new module in current directory(在当前目录初始化mod) |
tidy | add missing and remove unused modules(拉取缺少的模块,移除不用的模块) |
vendor | make vendored copy of dependencies(将依赖复制到vendor下) |
verify | verify dependencies have expected content (验证依赖是否正确) |
why | explain why packages or modules are needed(解释为什么需要依赖) |