go語言的包:1、fmt;2、io;3、bufio;4、sort;5、strconv;6、os;7、sync;8、flag;9、encoding/json;10、html/template;11、net/http;12、reflect等等。
本教程操作環(huán)境:windows10系統(tǒng)、GO 1.11.2、Dell G3電腦。
Go 語言的源碼復(fù)用建立在包(package)基礎(chǔ)之上。Go 語言的入口 main() 函數(shù)所在的包(package)叫 main,main 包想要引用別的代碼,必須同樣以包的方式進(jìn)行引用,本章內(nèi)容將詳細(xì)講解如何導(dǎo)出包的內(nèi)容及如何導(dǎo)入其他包。
Go 語言的包與文件夾一一對(duì)應(yīng),所有與包相關(guān)的操作,必須依賴于工作目錄(GOPATH)。
標(biāo)準(zhǔn)的Go語言代碼庫中包含了大量的包,并且在安裝 Go 的時(shí)候多數(shù)會(huì)自動(dòng)安裝到系統(tǒng)中。我們可以在 $GOROOT/src/pkg
目錄中查看這些包。下面簡(jiǎn)單介紹一些我們開發(fā)中常用的包。
1) fmt
fmt 包實(shí)現(xiàn)了格式化的標(biāo)準(zhǔn)輸入輸出,這與C語言中的 printf 和 scanf 類似。其中的 fmt.Printf() 和 fmt.Println() 是開發(fā)者使用最為頻繁的函數(shù)。
格式化短語派生于C語言,一些短語(%- 序列)是這樣使用:
-
%v:默認(rèn)格式的值。當(dāng)打印結(jié)構(gòu)時(shí),加號(hào)(%+v)會(huì)增加字段名;
-
%#v:Go樣式的值表達(dá);
-
%T:帶有類型的 Go 樣式的值表達(dá)。
2) io
這個(gè)包提供了原始的 I/O 操作界面。它主要的任務(wù)是對(duì) os 包這樣的原始的 I/O 進(jìn)行封裝,增加一些其他相關(guān),使其具有抽象功能用在公共的接口上。
3) bufio
bufio 包通過對(duì) io 包的封裝,提供了數(shù)據(jù)緩沖功能,能夠一定程度減少大塊數(shù)據(jù)讀寫帶來的開銷。
在 bufio 各個(gè)組件內(nèi)部都維護(hù)了一個(gè)緩沖區(qū),數(shù)據(jù)讀寫操作都直接通過緩存區(qū)進(jìn)行。當(dāng)發(fā)起一次讀寫操作時(shí),會(huì)首先嘗試從緩沖區(qū)獲取數(shù)據(jù),只有當(dāng)緩沖區(qū)沒有數(shù)據(jù)時(shí),才會(huì)從數(shù)據(jù)源獲取數(shù)據(jù)更新緩沖。
4) sort
sort 包提供了用于對(duì)切片和用戶定義的集合進(jìn)行排序的功能。
5) strconv
strconv 包提供了將字符串轉(zhuǎn)換成基本數(shù)據(jù)類型,或者從基本數(shù)據(jù)類型轉(zhuǎn)換為字符串的功能。
6) os
os 包提供了不依賴平臺(tái)的操作系統(tǒng)函數(shù)接口,設(shè)計(jì)像 Unix 風(fēng)格,但錯(cuò)誤處理是 go 風(fēng)格,當(dāng) os 包使用時(shí),如果失敗后返回錯(cuò)誤類型而不是錯(cuò)誤數(shù)量。
7) sync
sync 包實(shí)現(xiàn)多線程中鎖機(jī)制以及其他同步互斥機(jī)制。
8) flag
flag 包提供命令行參數(shù)的規(guī)則定義和傳入?yún)?shù)解析的功能。絕大部分的命令行程序都需要用到這個(gè)包。
9) encoding/json
JSON 目前廣泛用做網(wǎng)絡(luò)程序中的通信格式。encoding/json 包提供了對(duì) JSON 的基本支持,比如從一個(gè)對(duì)象序列化為 JSON 字符串,或者從 JSON 字符串反序列化出一個(gè)具體的對(duì)象等。
10) html/template
主要實(shí)現(xiàn)了 web 開發(fā)中生成 html 的 template 的一些函數(shù)。
11) net/http
net/http 包提供 HTTP 相關(guān)服務(wù),主要包括 http 請(qǐng)求、響應(yīng)和 URL 的解析,以及基本的 http 客戶端和擴(kuò)展的 http 服務(wù)。
通過 net/http 包,只需要數(shù)行代碼,即可實(shí)現(xiàn)一個(gè)爬蟲或者一個(gè) Web 服務(wù)器,這在傳統(tǒng)語言中是無法想象的。
12) reflect
reflect 包實(shí)現(xiàn)了運(yùn)行時(shí)反射,允許程序通過抽象類型操作對(duì)象。通常用于處理靜態(tài)類型 interface{} 的值,并且通過 Typeof 解析出其動(dòng)態(tài)類型信息,通常會(huì)返回一個(gè)有接口類型 Type 的對(duì)象。
13) os/exec
os/exec 包提供了執(zhí)行自定義 linux 命令的相關(guān)實(shí)現(xiàn)。
14) strings
strings 包主要是處理字符串的一些函數(shù)集合,包括合并、查找、分割、比較、后綴檢查、索引、大小寫處理等等。
strings 包與 bytes 包的函數(shù)接口功能基本一致。
15) bytes
bytes 包提供了對(duì)字節(jié)切片進(jìn)行讀寫操作的一系列函數(shù)。字節(jié)切片處理的函數(shù)比較多,分為基本處理函數(shù)、比較函數(shù)、后綴檢查函數(shù)、索引函數(shù)、分割函數(shù)、大小寫處理函數(shù)和子切片處理函數(shù)等。
16) log
log 包主要用于在程序中輸出日志。
log 包中提供了三類日志輸出接口,Print、Fatal 和 Panic。
-
Print 是普通輸出;
-
Fatal 是在執(zhí)行完 Print 后,執(zhí)行 os.Exit(1);
-
Panic 是在執(zhí)行完 Print 后調(diào)用 panic() 方法。
推薦學(xué)習(xí):Golang教程