如果我需要在Go中为一个包导入两个或多个文件,那么习惯用法是什么?将Go包导入分割成文件
直到今天我不喜欢这样写道:
file1.go
package A
import "os"
file2.go
package A
import "os"
如果我需要在Go中为一个包导入两个或多个文件,那么习惯用法是什么?将Go包导入分割成文件
直到今天我不喜欢这样写道:
file1.go
package A
import "os"
file2.go
package A
import "os"
这不是被惯用的一个问题,它的范围的问题。
Import declarations的范围是包含文件。 Spec: Import declarations:
的进口声明表示包含声明的源文件取决于导入的包(§Program initialization and execution)的功能,并且能够访问该包的出口标识符。
Spec: Declarations and scope:此外
转到使用blocks词法作用域:
...
3.导入的包的包名称的范围是包含的文件的文件块进口声明。
...
这意味着,如果有是在多个文件中需要一个包(形成一个包或多个,没关系),你必须在所有的单独导入这些文件。
你应该做的是审查和修改你如何分离文件之间的代码,因为它可能是一个很好的方法,将函数和声明分组到相同的依赖关系(取决于相同的一组包) ,所以你只需要导入这些包一次。
还要注意的是,如果包mypkg
的某些文件依赖于一组其他包的,但不是mypkg
的其他文件,也可能是有利可图的mypkg
分成基础上,依赖两个独立的包。尽管这些决定大部分都是主观的,但是你知道你的案例是否有意义。
很好的答案,谢谢! – Steffen