規(guī)范提到:每個包都有一個包塊,其中包含該包的所有 Go 源文本。每個文件都有一個文件塊,其中包含該文件中的所有 Go 源文本。package 塊是以 package 子句開頭的 Go 源文本我的理解是每個 Go 源文本總是以 package 子句開頭“文件塊”與“包塊”有何不同?
1 回答

拉風的咖菲貓
TA貢獻1995條經驗 獲得超2個贊
顯而易見的答案是文件塊包含文件的 Go 源文本,包塊包含包的 Go 源文本。一個包是由一個或多個源文件構建的。
Go 程序是通過將包鏈接在一起構建的。一個包又是由一個或多個源文件構成的,這些源文件一起聲明屬于該包的常量、類型、變量和函數(shù),并且可以在同一包的所有文件中訪問。
的確,無論源代碼如何在其文件之間“分布”,一個包總是作為一個單元處理,但有些結構是“文件范圍的”。規(guī)范:聲明和范圍:
Go 的詞法范圍是使用塊:
[...]
3. 導入包的包名稱的范圍是包含導入聲明的文件的文件塊。
最明顯的是進口申報。如果一個包由多個文件組成,并且您在一個文件中導入另一個包,則不能在另一個文件(同一包的)中使用它。
另一個重要的構造是構建約束。放置在源文件中的構建約束僅適用于給定文件,而不適用于同一包中的其他文件。
- 1 回答
- 0 關注
- 106 瀏覽
添加回答
舉報
0/150
提交
取消