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