【问题标题】:Go custom package import errorGo 自定义包导入错误
【发布时间】:2016-04-05 17:55:03
【问题描述】:

我正在尝试编写一个具有如下结构的程序:

Go/src/
  -github.com
     -myname
        -hello
           main.go
           -vector
              vector.go

当我在 main.go 文件内的代码中使用如下命令导入包时:

import(
  "vector"
)

我收到错误消息:

Can't find package "vector" in any of:
    C:\Go\src\vendor\vector (vendor tree)
    C:\Go\src\vertex (from $GOROOT)
    C:\Go\src\github.com\myname\src\vertex (from $GOPATH)

为什么要在最后一行添加src?它不应该用 hello 文件夹替换 src ,因为这是我运行文件的地方吗?此外,如果我从 github.com/myname/hello/vertex 这样的完整文件结构中导入它,它就会运行,这对我来说似乎很奇怪。

我正在使用go run hello.go 执行以简化我与程序的交互。

【问题讨论】:

    标签: go


    【解决方案1】:

    您的 Go 代码(与 Go 的 stdlib 相对)应位于 $GOPATH/src 下(编辑:不是 $GOROOT,正如我最初所说的!),并且始终使用完整的导入路径,在您的情况下以 github.com/ 开头(即使您想出了避免不得不这样做的方法)。

    Go 团队在 How to Write Go Code 中提供了更多内容,此处还有描述 project layoutthe first steps to setting a workspace up 的其他答案。

    【讨论】:

    • 所以如果我理解正确的话,我的个人代码在$GOROOT/src,但是如果我从别人的代码中导入一个repo,我会把它放在$GOROOT/src/github.com/username/reponame 文件夹中?
    • 用户的代码应该在 $GOPATH[/src] 下,而不是 $GOROOT[/src]。
    • @cd1 呃,非常抱歉,已修复
    • @Rob -- 见上文;我大错特错了。通常,您的代码和其他人的代码应该具有相似的结构 - 请参阅“第一步...”链接以获取您制作“$GOPATH/src/github.com/youruser”的示例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 2016-04-30
    • 2021-07-12
    相关资源
    最近更新 更多