golang使用导入的子目录的功能

时间:2014-08-10 13:23:14

标签: import go subdirectory

我无法使用自定义子目录的功能。

我的代码组织

我在" 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


感谢您的任何建议

2 个答案:

答案 0 :(得分:6)

你的方法完全错了。 Go绝对没有导入文件或目录的概念,你可以在Go中导入所有包。现在碰巧包的名称是它相对于GOPATH的路径,并且您按该名称导入包。但是导入代码中导入包可用的标识符取决于包的包声明。您不能简单地在目录之间“移动”文件,因为每个目录(对于go工具)都是单个包而不更改包声明。

您可以在路径package x下拥有a/b/c。当您使用import ( "a/b/c" )导入包x时,包x中的所有导出内容都可以x.ExportedName使用。

请仔细阅读http://blog.golang.org/organizing-go-code

答案 1 :(得分:0)

在尝试构建a/b/d/e之前,首先尝试在a/b中进行构建:生成要导入的已编译类。