介绍
上一次我们介绍了 , 本文将引导您了解什么是GOPATH,如何工作以及如何进行设置。这是设置Go 开发环境 以及了解Go如何查找,安装和构建源文件的关键步骤。我们将使用$GOPATH来查找文件夹结构的 环境变量 。
一个Go Workspace(工作区)来管理我们的源文件,编译的二进制文件,以及用于更快的编译后缓存的对象。尽管可以有多个空间,但通常也建议只有一个Go Workspace(工作空间)。在GOPATH用作工作区的root文件夹。
设置$GOPATH环境变量
在$GOPATH寻找进入工作区的GO环境变量列表的地方。
默认情况下,Go假设我们的GOPATH位置在$HOME/go,这个$HOME是我们计算机上用户帐户的根目录。我们可以通过设置$GOPATH环境变量来更改它。要进一步研究,请遵循本教程,了解如何在Linux中读取和设置环境变量。
有关设置$GOPATH变量的更多信息,可以参阅Go 文档。
此外,本系列文章还将介绍如何安装Go并设置Go开发环境。
$GOPATH 不是 $GOROOT
该$GOROOT是去哪里的代码,编译器和工具的生命-这是 不是 我们的源代码。在$GOROOT通常是这样的/usr/local/go。我们$GOPATH通常是这样的$HOME/go。
尽管我们不再需要专门设置$GOROOT变量,但是在较旧的资料中仍然引用了该变量。
现在,让我们讨论Go Workspace的结构。
Go Workspace(工作区)剖析
Go Workspace(工作区)的内部,或者GOPATH,有三个目录: bin ,pkg,和src。这些目录中的每一个对于Go开发都有特殊的含义。
.
├── bin
├── pkg
└── src
└── github .com/foo/bar
└── bar.go
让我们看一下每个目录。
该$GOPATH/bin目录是Go放置编译二进制文件的地方,是go install的编译结果的存放位置。我们的操作系统使用$PATH环境变量来查找无需完整路径即可执行的二进制应用程序。建议将此目录添加到我们的全局目录中$PATH变量中。
例如,如果不添加$GOPATH/bin以$PATH从那里执行程序,则需要运行:
$GOPATH/bin/myapp
当$GOPATH/bin被加入到$PATH我们可以像这样同一个调用:
myapp
$GOPATH/pkgGo在该目录中存储预编译的目标文件,以加快程序的后续编译速度。通常,大多数开发人员不需要访问此目录。如果您在编译时遇到问题,则可以安全地删除该目录,然后Go将对其进行重建。
该src目录是我们所有.go文件或源代码必须位于的目录。请勿将它与Go工具使用的源代码(位于)混淆$GOROOT。在编写Go应用程序,程序包和库时,我们会将这些文件放在下$GOPATH/src/path/to/code。
什么是Packages?
Go代码以Packages( 软件包 )的形式组织。包代表磁盘上单个目录中的所有文件。一个目录只能包含同一软件包中的某些文件。软件包与所有用户编写的Go源文件一起存储在该$GOPATH/src目录下。我们可以通过导入不同的软件包来了解软件包的解析。
如果我们的代码位于,$GOPATH/src/blue/red则其包名称应为red。
该red软件包的导入语句为:
import “blue/red”
存储在诸如GitHub和BitBucket之类的源代码存储库中的软件包将存储库的完整位置作为其导入路径的一部分。
例如,我们将使用以下导入路径在处导入源代码:
import “github.com/gobuffalo/buffalo”
因此,此源代码将位于磁盘上的以下位置:
$GOPATH/src/github.com/gobuffalo/buffalo
结论
在本文中,我们讨论了$GOPATH,以及这些文件夹及其包含的内容。通过设置$GOPATH环境变量,我们知道如何从默认位置更改为用户的选择。最后,我们讨论了Go如何在该文件夹结构内搜索软件包。
在Go 1.11中引入的 Go Modules 旨在取代Go Workspaces和GOPATH。建议开始使用模块,但是某些环境(例如公司环境)可能尚未准备好使用模块。
GOPATH是设置Go开发环境需要完成的准备之一,但是一旦设置完成,就可以不用关注它了。
点击关注,如果发现任何不正确的地方,或者想分享有关上述主题的更多信息,欢迎反馈。