【问题标题】:Developing Golang Package, cannot use relative path开发 Golang 包,不能使用相对路径
【发布时间】:2015-02-18 18:37:53
【问题描述】:

我正在尝试开发一个简单的 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" 导入它。

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

【问题讨论】:

    标签: import go package


    【解决方案1】:

    阅读this

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

    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.com/user/hello/game-utils" 2. 使用 go install github.com/user/hello 安装 3. cd 到 repo $GOPATH/src/github.... 4.然后在那里开始开发(测试、提交、bla bla)?
    • @sendyhalim 欢迎您。你大多是正确的。关于数字 2 的详细信息。使用 go get(而不是 go install)获取源代码。如果我要使用“go get”修改我正在下载的代码,我更喜欢自己创建目录结构并使用“git clone”获取代码,根据我的经验,这可以帮助避免一些 git repo 配置稍后。
    • @Topo 好的!哈哈。 Anw,如果我还没有推送任何代码,那么唯一的方法是手动创建 dir('$GOPATH/src/user/hello') 并在那里开发吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2015-09-26
    相关资源
    最近更新 更多