在 Go 中导入本地包:为什么 GOPATH 和主目录会有所不同
Go 提供了一种使用相对路径导入本地包的便捷方法路径。然而,当包驻留在 GOPATH 中时,这种方法有局限性。
GOPATH 的角色
GOPATH 指定 Go 将在其中搜索包的目录。在提供的示例中,项目位于 $GOPATH/src/project,这意味着 Go 将期望包名称与目录结构匹配。
相对导入限制
相对导入路径允许您引用当前目录或其子目录中的包。在这种情况下,“models”包位于项目的“models”子目录中。
但是,当使用 go build 或 go install 编译或安装包时,不完全支持相对导入。这些工具期望包路径是绝对路径或遵循“如何编写 Go 代码”中描述的标准结构。
主目录异常
当项目位于在主目录(例如 ~/project)中,相对导入按预期工作。这是因为主目录不是 GOPATH 的一部分,Go 会在当前目录及其子目录中搜索包。
解决方案
克服限制GOPATH 中的相对导入,建议根据“如何编写 Go 代码”中提供的指南来构建代码。这涉及使用绝对导入路径或以与 GOPATH 结构一致的方式组织包。
以上是为什么相对导入在我的主目录中有效,但在 GOPATH 中无效?的详细内容。更多信息请关注PHP中文网其他相关文章!