$ GOPATH背后的编程范式是什么,它有什么作用?

时间:2017-08-15 00:43:50

标签: go gopath

作为Golang的新手,我对$GOPATH的概念感到有些困惑。

在我的经验中,它让我想起的唯一一件事就是Microsoft Windows机器上的“系统文件夹路径”(C:\WindowsC:\Program Files) - 它在某种程度上是概念上的与此相关?

我似乎是对它的描述from the go team,但它太实际了,它谈论它是什么,而不是为什么

那么,为什么呢?

2 个答案:

答案 0 :(得分:3)

它是一个"包含路径"。实际上,每种(现代)语言都使用一种语言。

对于C / C ++,它是LIBINC环境变量的组合(至少在Unix / Makefile环境中)。

对于Perl(5),它是PERLLIBPERL5LIB个环境变量。

对于Python,它是PYTHONHOME环境变量。

对于Node.js,它是NODE_PATH变量。

Etc等。

答案 1 :(得分:1)

GOPATH是一个变量,指示应用程序的依赖项的安装位置。它基本上是存储应用程序可能使用的包的目录的路径。

任何合理大小的应用程序都有依赖关系。在golang中,这些以包的形式出现。在编译时,需要知道依赖项的位置(即您使用的包),以便可以构建您的可执行文件。

它们可以存储在固定的预定义位置,也可以以某种方式使用户能够自己指定位置。第一种方法有很多缺点(例如,不可能支持具有不同目录结构的操作系统)。因此,go工具的设计者决定通过该变量使用户可配置。这也为用户提供了更大的灵活性,例如能够将不同项目的依赖项分组到不同的目录中。

环境变量(如GOPATH)的使用不仅限于golang。 Java有CLASSPATH,Python有PYTHONPATH等等(每个都有它们的怪癖,但具有相同的基本角色)。