Go包的导入分为多个文件

时间:2017-02-12 20:35:57

标签: go import dependencies

如果我需要在Go中为一个包导出两个或多个文件,那么惯用法是什么?

直到今天我这样做:

file1.go

package A

import "os"

file2.go

package A

import "os"

1 个答案:

答案 0 :(得分:4)

这不是一个惯用的问题,而是一个范围问题。

Import declarations的范围限定为包含文件Spec: Import declarations:

  

导入声明声明包含声明的源文件取决于导入的包的功能(§Program initialization and execution),并允许访问该包的导出标识符。

另外Spec: Declarations and scope:

  

Go使用blocks进行词汇限定:
  ...
  3.导入包的包名称范围是包含导入声明的文件的文件块
  ...

这意味着,如果多个文件中需要一个包(形成一个包或多个包,则没关系),您必须在所有这些文件中单独导入它。

您应该做的是检查和修改如何在文件之间分隔代码,因为这可能是将函数和声明分组到具有相同依赖关系(依赖于同一组包)的同一文件中的好方法,所以你只需要导入一次这些包。

另请注意,如果包mypkg的某些文件依赖于一组其他包,而不是mypkg的其他文件,则将mypkg拆分为2也可能有利可图根据依赖关系分离包。大多数这些决定都是主观的,你知道它们是否对你的情况有意义。