规范提到:每个包都有一个包块,其中包含该包的所有 Go 源文本。每个文件都有一个文件块,其中包含该文件中的所有 Go 源文本。package 块是以 package 子句开头的 Go 源文本我的理解是每个 Go 源文本总是以 package 子句开头“文件块”与“包块”有何不同?
1 回答
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
显而易见的答案是文件块包含文件的 Go 源文本,包块包含包的 Go 源文本。一个包是由一个或多个源文件构建的。
Go 程序是通过将包链接在一起构建的。一个包又是由一个或多个源文件构成的,这些源文件一起声明属于该包的常量、类型、变量和函数,并且可以在同一包的所有文件中访问。
的确,无论源代码如何在其文件之间“分布”,一个包总是作为一个单元处理,但有些结构是“文件范围的”。规范:声明和范围:
Go 的词法范围是使用块:
[...]
3. 导入包的包名称的范围是包含导入声明的文件的文件块。
最明显的是进口申报。如果一个包由多个文件组成,并且您在一个文件中导入另一个包,则不能在另一个文件(同一包的)中使用它。
另一个重要的构造是构建约束。放置在源文件中的构建约束仅适用于给定文件,而不适用于同一包中的其他文件。
- 1 回答
- 0 关注
- 67 浏览
添加回答
举报
0/150
提交
取消