作为Golang的新手,我对$GOPATH
的概念感到有些困惑。
在我的经验中,它让我想起的唯一一件事就是Microsoft Windows机器上的“系统文件夹路径”(C:\Windows
,C:\Program Files
) - 它在某种程度上是概念上的与此相关?
我似乎是对它的描述from the go team,但它太实际了,它谈论它是什么,而不是为什么。
那么,为什么呢?
答案 0 :(得分:3)
它是一个"包含路径"。实际上,每种(现代)语言都使用一种语言。
对于C / C ++,它是LIB
和INC
环境变量的组合(至少在Unix / Makefile环境中)。
对于Perl(5),它是PERLLIB
或PERL5LIB
个环境变量。
对于Python,它是PYTHONHOME
环境变量。
对于Node.js,它是NODE_PATH
变量。
Etc等。
答案 1 :(得分:1)
GOPATH
是一个变量,指示应用程序的依赖项的安装位置。它基本上是存储应用程序可能使用的包的目录的路径。
任何合理大小的应用程序都有依赖关系。在golang中,这些以包的形式出现。在编译时,需要知道依赖项的位置(即您使用的包),以便可以构建您的可执行文件。
它们可以存储在固定的预定义位置,也可以以某种方式使用户能够自己指定位置。第一种方法有很多缺点(例如,不可能支持具有不同目录结构的操作系统)。因此,go工具的设计者决定通过该变量使用户可配置。这也为用户提供了更大的灵活性,例如能够将不同项目的依赖项分组到不同的目录中。
环境变量(如GOPATH
)的使用不仅限于golang。 Java有CLASSPATH
,Python有PYTHONPATH
等等(每个都有它们的怪癖,但具有相同的基本角色)。