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

假设它的名字是" Hello",目录结构如下

1
2
3
hello
   games
   game-utils

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

1
2
3
4
import (
    gameUtils"./game-utils"
   "./games"
)

好的,直到我推送到远程仓库(例如github.com)并尝试使用go get来安装它之前,它都工作良好。 问题出在导入路径上,我必须将其更改为

1
2
3
4
import (
    gameUtils"github.com/user/hello/game-utils"
   "github.com/user/hello/games"
)

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

有什么优雅的方法可以解决此问题吗?


读这个。

您应该始终使用以下命令导入它:

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

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

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

如果要创建新项目,则应遵循相同的目录结构。 如果您打算将代码上传到github,请手动创建文件夹"GOPATH/src/github.com/YOUR-GITHUB-USER/PROYECT-NAME",然后在其中初始化git repo。 (这至少在githgsvngithubbitbucketgoogle code上有效)

  • @Topo您好,感谢您的快速响应,因此,总结一下,我只需要:1. import gameUtils"github.comuserhellogame-utils" 2.使用go install github.comuserhello安装3. cd至仓库$GOPATHsrcgithub.... 4.然后开始开发(测试,提交, bla bla)在那里?
  • @sendyhalim不客气。 您基本上是正确的。 有关编号2的详细信息,请使用go get(而非go install)获取源。 而且,如果我要用go get修改我要下载的代码,我更喜欢自己创建目录结构并使用git clone获取代码,以我的经验,这可以避免以后配置某些git repo。
  • @Topo好的! 哈哈。 w,如果我还没有推送任何代码,那么唯一的方法是手动创建dir($ GOPATH / src / user / hello)并在那里进行开发?