为了账号安全,请及时绑定邮箱和手机立即绑定

Go - “文件块”和“包块”有什么区别?

Go - “文件块”和“包块”有什么区别?

Go
白板的微信 2022-11-23 20:28:13

规范提到:

每个包都有一个包块,其中包含该包的所有 Go 源文本。

每个文件都有一个文件块,其中包含该文件中的所有 Go 源文本。


package 块是以 package 子句开头的 Go 源文本

我的理解是每个 Go 源文本总是以 package 子句开头

“文件块”与“包块”有何不同?


查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1715条经验 获得超2个赞

显而易见的答案是文件块包含文件的 Go 源文本,包块包含包的 Go 源文本。一个包是由一个或多个源文件构建的。

规格: 包装:

Go 程序是通过将包链接在一起构建的。一个包又是由一个或多个源文件构成的,这些源文件一起声明属于该包的常量、类型、变量和函数,并且可以在同一包的所有文件中访问。

的确,无论源代码如何在其文件之间“分布”,一个包总是作为一个单元处理,但有些结构是“文件范围的”。规范:声明和范围:

Go 的词法范围是使用
[...]
3. 导入包的包名称的范围是包含导入声明的文件的文件块。

最明显的是进口申报。如果一个包由多个文件组成,并且您在一个文件中导入另一个包,则不能在另一个文件(同一包的)中使用它。

另一个重要的构造是构建约束。放置在源文件中的构建约束仅适用于给定文件,而不适用于同一包中的其他文件。


查看完整回答
反对 回复 2022-11-23

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信