go语言包管理

Posted lxx-coder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(解释为什么需要依赖)

以上是关于go语言包管理的主要内容,如果未能解决你的问题,请参考以下文章

Go语言之包管理

go语言包管理

go语言包管理

Go 包管理机制深入分析

Go语言使用Godep进行包管理

Go 包管理机制深入分析