开发Golang包,不能使用相对路径

时间:2014-12-19 19:22:06

标签: import go package

我正在尝试开发一个简单的golang包

假设它的名字是“Hello”,目录结构如下所示

hello
   games
   game-utils

然后在hello.go(主要代码)中我有这些:

import (
    gameUtils "./game-utils"
    "./games"
)

确定这很有效,直到我推送到远程仓库(例如github.com)并尝试使用go get进行安装。问题在于导入路径,我必须将其更改为

import (
    gameUtils "github.com/user/hello/game-utils"
    "github.com/user/hello/games"
)

问题是,每次我开发包时都无法使用"github.com/user/hello/game-utils"导入,因为显然我不会将其推送到远程仓库,我需要使用"./game-utils"导入它。

有没有优雅的方法来解决这个问题?

1 个答案:

答案 0 :(得分:4)

阅读this

您应该始终使用以下方式导入它:

import "github.com/user/hello/game-utils"

这是因为go工具的工作原理。它将在目录中的本地计算机上查找它:"GOPATH/src/github.com/user/hello/game-utils"。正如@JimB指出的那样,编译器始终使用本地源,导入路径相对于GOPATH/src

go get工具是唯一一个在互联网上查找来源的工具。获取它们之后,它会将它们下载到"GOPATH/src/IMPORT_PATH",以便编译器和其他工具现在可以在它们的本地结构中看到它们。

如果要创建新项目,则应尊重相同的目录结构。如果您计划将代码上传到github,则手动创建文件夹"GOPATH/src/github.com/YOUR-GITHUB-USER/PROYECT-NAME",然后在那里初始化您的git repo。 (这至少适用于githgsvngithubbitbucketgoogle code