我无法使用自定义子目录的功能。
我在" src"像
这样的路径层次结构A / B
包含我的所有目录和go-Files(它是我项目的" root")。目录不包含子目录,它工作正常。所以最深的路径是" a / b / c"。例如。我有
A / B / C
和
A / B / d
有一些go文件。导入" a / b / d"用" d.DoSomething()"调用函数来自" a / b / c"中的文件工作正常。
现在我想要重新组织" a / b / d"。我从" a / b / d"移动了一些文件。到
A / B / d / E
和其他文件
A / B / d / F
如果尝试导入" a / b / d / e" with import-statement
导入(" a / b / d / e")
来自" / a / b / c"中的同一文件并想打电话给" e.DoSomething()" (这是带有" DoSomething-function"移动到的文件的地方),我收到错误,我打电话给#34; e.DoSomething()": " undefined:e"。
在搜索结果时,我没有看到更深层路径层次结构的示例。通常不可能使用/ import子目录或问题是什么?
我使用的go-version:go1.2.2 linux / amd64感谢您的任何建议
答案 0 :(得分:6)
你的方法完全错了。 Go绝对没有导入文件或目录的概念,你可以在Go中导入所有包。现在碰巧包的名称是它相对于GOPATH的路径,并且您按该名称导入包。但是导入代码中导入包可用的标识符取决于包的包声明。您不能简单地在目录之间“移动”文件,因为每个目录(对于go工具)都是单个包而不更改包声明。
您可以在路径package x
下拥有a/b/c
。当您使用import ( "a/b/c" )
导入包x时,包x中的所有导出内容都可以x.ExportedName
使用。
答案 1 :(得分:0)
在尝试构建a/b/d/e
之前,首先尝试在a/b
中进行构建:生成要导入的已编译类。