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