我无法使用自定义子目录的功能。
我的代码组织
我在“src”下有一个路径层次结构,如
a/b
包含我所有的目录和 go-Files(它是我项目的“根”)。这些目录不包含子目录,并且工作正常。所以最深的路径是“a/b/c”。例如。我有
a/b/c
和
a/b/d
带有一些 go-files。从“a/b/c”中的文件导入“a/b/d”并使用“d.DoSomething()”调用函数效果很好。
问题描述
现在我想重新组织“a/b/d”。我将一些文件从“a/b/d”移动到
a/b/d/e
和其余的文件到
a/b/d/f
如果尝试使用导入语句导入“a/b/d/e”
import ( "a/b/d/e" )
从“/a/b/c”中的同一个文件并想调用“e.DoSomething()”(这是带有“DoSomething-function”的文件移动到的地方),我得到一个该行出错,我调用“e.DoSomething()”:“undefined: e”。
在搜索结果时,我在任何地方都没有看到具有更深路径层次结构的示例。是一般不能使用/导入子目录还是什么问题?
我用的go版本:go1.2.2 linux/amd64
谢谢你的建议
最佳答案
你的做法是完全错误的。 Go 完全没有导入文件或目录的概念,你可以在 Go 中导入所有包。现在碰巧包的名称是它相对于 GOPATH 的路径,并且您可以使用该名称导入包。但是导入代码中导入包可用的标识符取决于包的包声明。您不能简单地在目录之间“移动”文件,因为每个目录(对于 go 工具)都是一个包而不更改包声明。
您可以在路径 a/b/c
下拥有 package x
。当您使用 import ( "a/b/c")
导入包 x 时,所有从包 x 导出的内容都可以作为 x.ExportedName
访问。
关于import - golang 使用导入子目录的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25229018/