欢迎,来自IP地址为:18.219.22.169 的朋友


GOPATH是为了解决程序中“import”声明而引入的系统环境变量。这个GOPATH环境变量用于指示Go代码的位置。在类Unix系统中,这个变量是一个冒号分隔的字符串;在Windows系统中,这个环境变量是分号分隔的字符串。

这个变量在Windows系统可以自行指定,并且这个变量可以有多个,基本可以理解为一个Go项目就可以设置一个单独的GOPATH环境变量。设置方法为“系统属性”->“高级”选项卡->“环境变量”->“系统变量”->“新建”,然后在对话框中的“变量名”输入“GOPATH”,变量值可以用“浏览目录”选择,就是Go项目的文件目录。由于GOPATH变量可以设置多个,也可以一个变量中包含多个值,所以具体方法根据大家喜好。示意图如下:

如果使用IDE,那么在IDE里设置就是了,也不影响使用。

一个标准的Go项目目录,一般包含/src目录用于源代码;/pkg目录用于存放安装程序包对象,也可以理解为非main包而又在项目中使用的代码会被编辑安装到这个目录里,一般是以.a结尾,存在于操作系统_处理器类型的目录里,如linux_adm64等。在最终编辑main包时,若将这些包引入,则不需要重新编译而可以直接使用,提升编译效率;/bin目录用于存入main包的最终可执行文件。

典型的Go语言目录树是下图这个样子的:

GOPATH=c:\User\go
c:\User\go
       \src
           \foo
               \bar           //此处的go代码包名为bar
                x.go
               \quux          //此处的go代码包名为main
                y.go
       \bin
        quux.exe
       \pkg
           \windows_amd64
                \foo
                 bar.a        //编译出的包对象

Go编译器会在GOPATH所指定的目录中查找源代码,并根据包名来进行相关的编译。注意如果main包中引入了其它的自定义包,则需要按先引入包再main包的顺序进行编译,以免出错。这就意味着如果引入包有修改,则main包也需要重新编译才会发生变化。

由于Go语言推荐使用命令行进行代码编译,并且可以按包进行编译,所以上面的编译过程可以使用如下命令完成:

c:\User\go> go build foo\bar
c:\User\go> go install foo\bar
c:\User\go> go build foo\quux
c:\User\go> go install foo\bar

编译时只需要指明包所在的目录,而不用指定文件。由于可执行文件是程序最终的形态,所以在编译后会直接生成到/bin目录里而不会再增加子目录。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注