2017-02-12 64 views
1

如果我需要在Go中为一个包导入两个或多个文件,那么习惯用法是什么?将Go包导入分割成文件

直到今天我不喜欢这样写道:

file1.go

package A 

import "os" 

file2.go

package A 

import "os" 

回答

4

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

Import declarations的范围是包含文件Spec: Import declarations:

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

Spec: Declarations and scope:此外

转到使用blocks词法作用域:
...
3.导入的包的包名称的范围是包含的文件的文件进口声明。
...

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

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

还要注意的是,如果包mypkg的某些文件依赖于一组其他包的,但不是mypkg的其他文件,也可能是有利可图的mypkg分成基础上,依赖两个独立的包。尽管这些决定大部分都是主观的,但是你知道你的案例是否有意义。

+0

很好的答案,谢谢! – Steffen