Go一定要理解的环境概念

Posted 玖五二七

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go一定要理解的环境概念相关的知识,希望对你有一定的参考价值。

输入go env会出现一系列GO相关的环境变量,其中几个重要的

go env
GOPATH=d:\\go
GOROOT=f:\\go
GO111MODULE=on

GOROOT

GOROOT就是我们Go语言的安装路径。我这里是 GOROOT=f:\\go
打开这个文件夹,可以看到

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

src, bin, pkg三个文件夹,
标准的Go语言代码库中包含了大量的包,并且在安装 Go 的时候多数会自动安装到系统中。我们可以在

$GOROOT/src
$GOROOT/pkg

目录中查看这些包。当我们 import内置包的时候,并不需要额外安装,当程序运行时,会先去GOROOT下找相应的包来运行。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

GOPATH

GOPATH 是 Go语言中使用的一个环境变量,它使用绝对路径提供项目的工作目录

工作目录:一个工程开发的相对参考目录工作区的概念与工作目录的概念也是类似的。如果不使用工作目录的概念,在多人开发时,每个人有一套自己的目录结构,读取配置文件的位置不统一,输出的二进制运行文件也不统一,这样会导致开发的标准不统一,影响开发效率

对于多项目来说,需要设置多个GOPATH来满足需求

1、 当执行golang程序,需要获取import的包时,编译器回先去GOROOT路径下的src文件夹找有没有我们在程序中import的包
2、如果在GOROOT下没有找到,就会去GOPATH下src下找这个包

所以只要GOROOT跟GOPATH下都没找到包的话就会报错

使用GOPATH的工程结构

在 GOPATH 指定的工作目录下,代码总是会保存在 $GOPATH/src 目录下。在工程经过 go buildgo installgo get 等指令后,会将产生的二进制可执行文件放在 $GOPATH/bin目录下,生成的中间缓存文件会被保存在 $GOPATH/pkg 下。

如果需要将整个源码添加到版本管理工具(Version Control System,VCS)中时,只需要添加 $GOPATH/src 目录的源码即可。bin 和 pkg 目录的内容都可以由 src 目录生成。

gopath缺陷

GOPATH 很大的缺点,就是相关第三方包只要不是官方库,都需要放置在GOPATH/src的路径下才可使用。通常我们会使用go get指令来获取网络上的第三方包,并安装到本地。而且还缺少版本管理

GO Module

这个需要独立出来成一篇文章

以上是关于Go一定要理解的环境概念的主要内容,如果未能解决你的问题,请参考以下文章

OSPF部分概念个人理解

理解闭包

亲测GO环境搭建,理解go buildgo installgo get

关于环境变量配置的思考总结

Go 语言入门基础语法

go编程语言 设置环境变量是怎么回事