代碼包是代碼編譯和安裝的基本單位,也是非常直觀的代碼組織形式。
1、包聲明
2、包導入
import ( mylog "github.com/helper/log" ) mylog 就是導入包的別名
Go 語言中的變量、常量、函數(shù)和類型聲明可統(tǒng)稱為程序實體,而他們的名稱統(tǒng)稱為表示符
var logger = NewLogger("gopcp") logger 是標識符 NewLogger("gopcp") 是程序實體
標識符的大小寫控制對應程序的訪問權限
3、包初始化
有專門的函數(shù)負責代碼包初始化,這個函數(shù)就是無任何參數(shù)和結果聲明的 init函數(shù)。
func init() { fmt.Println("initialize...") }
Go 會在程序真正執(zhí)行前對整個程序的依賴進行分析,并初始化相關的代碼包。
當前代碼包中所有全局變量的初始化會在代碼包初始化函數(shù)執(zhí)行前完成
是開發(fā)人員編寫的,具有很強可讀性的一組相關代碼文本。
“二進制包”是經(jīng)過編譯的,機器運行時才能識別的一組相關文件。
包是一個分層次的文件目錄結構,它定義了一個由模塊及子包,和子包下的子包等組成的Python的應用環(huán)境。
考慮一個在Phone目錄下的pots.py文件。這個文件有如下源代碼:
?
同樣地,我們有另外兩個保存了不同函數(shù)的文件:
Phone/Isdn.py 含有函數(shù)Isdn()
Phone/G3.py 含有函數(shù)G3()
現(xiàn)在,在Phone目錄下創(chuàng)建file __init__.py:
?
當你導入Phone時,為了能夠使用所有函數(shù),你需要在__init__.py里使用顯式的導入語句,如下:
?
當你把這些代碼添加到__init__.py之后,導入Phone包的時候這些類就全都是可用的了。
?