我正在尝试开发一个简单的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"
导入它。
有没有优雅的方法来解决这个问题?
答案 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。 (这至少适用于git
,hg
,svn
和github
,bitbucket
和google code
)