[备忘录] 关于Go语言的GOPATH和包的内容

在互联网上已经有各种各样的日语信息了,但我会为自己写备忘录。

GOPATH是什么?

请参考此文章或者使用go help获取更详细的信息。

$ go help gopath

这是为了从外部构建或安装包时所需的。当执行go get时,它将被引用,并将获取的数据放入$GOPATH/src下。

比如,执行以下命令,将在$GOPATH/src目录下创建golang.org/x/net/html目录,该目录中包含与html包相关的数据(顺便提一下,golang.org/x/net/html包支持HTML解析等功能)。

$ go get golang.org/x/net/html

进入$GOPATH设置的路径后,可以通过golang的源文件以以下方式导入包。

import "golang.org/x/net/html"

在哪里设置GOPATH才好?

随便哪里都可以。
根据我的调查,好像很多人将其设置在 $HOME/go。

$ export GOPATH=$HOME/go

GOPATH可以设置多个目录吗?

可以做到。但是除了第一个指定的内容之外,其他的可能是无效的。

假设我们以以下方式指定了GOPATH作为例子。

$ export GOPATH=$HOME/go:$HOME/golang:$HOME/workspace/go

只有在Go编译器寻找外部包时,所有指定的GOPATH才有效。换句话说,只要在import语句中指定的包位于GOPATH路径下(不会导致编译错误),编译器就可以找到它。放置在$HOME/workspace/go/src目录下的包可以被导入。

只有指定的第一个GOPATH才会生效的情况是使用go get下载和安装外部包时。使用go get命令,外部包会被安装到指定的第一个$HOME/go路径下。

下面是参考来源。
现在是时候认真考虑关于Golang开发环境的问题了 – GOPATH的污染问题。

可以使用相对路径来导入外部包吗?

import "./foo"
import "../bar/baz"

基于以下原因,不建议使用。

    • コンパイルのたびにパッケージ化するため、コンパイルが遅くなる

 

    go getが使えない

以下是来源。
关于如何在Golang中导入自定义包的方法一切详解。

此外,在GOPATH下,不允许使用相对路径进行导入,如上述。

bannerAds