學習go語言編程之標準庫

標準庫包分類

Golang標準庫可以大致按其中庫的功能進行以下分類:

分類 對應包 描述
輸入輸出 bufio,fmt,io,log,flag 這個分類包括二進制以及文本格式在屏幕、鍵盤、文件以及其他設備上的輸入輸出等,比如二進制文件的讀寫。
文本處理 encoding,bytes,strings,strconv,text,mime,unicode,regexp,index,path 這個分類包括字符串和文本內容的處理,比如字符編碼轉換等。
網絡 net,http,expvar 這個分類包括開發網絡程序所需要的包,比如Socket編程和網站開發等。
系統 os,syscall,sync,time,unsafe 這個分類包含對系統功能的封裝,比如對操作系統的交互以及原子性操作等。
數據結構與算法 math,sort,container,crypto,hash,archive,compress,image 整個分類對應各種數據結構和算法的實現封裝。
運行時 runtime,reflect,go 這個分類對應獲取運行時信息。

常用包介紹

如下介紹Golang語言標準庫裏使用頻率相對較高的一些包。

包名 描述
fmt 它實現了格式化的輸入輸出操作,其中的fmt.Printf()fmt.Println()是開發者使用最爲頻繁的函數。
io 它實現了一系列非平臺相關的IO相關接口和實現,比如提供了對os中系統相關的IO功能的封裝。
bufio 它在io的基礎上提供了緩存功能。在具備了緩存功能後,bufio可以比較方便地提供ReadLine之類的操作。
strconv 本包提供字符串與基本數據類型互轉的能力。
os 本包提供了對操作系統功能的非平臺相關訪問接口。接口爲Unix風格。提供的功能包括文件操作、進程管理、信號和用戶賬號等。
sync 它提供了基本的同步原語。在多個goroutine訪問共享資源的時候,需要使用sync中提供的鎖機制。
flag 它提供命令行參數的規則定義和傳入參數解析的功能。絕大部分的命令行程序都需要用到這個包。
encoding/json 本包提供了對JSON的基本支持,比如從一個對象序列化爲JSON字符串,或者從JSON字符串反序列化出一個具體的對象等。
http 通過http包,只需要數行代碼,即可實現一個爬蟲或者一個Web服務器。

完整包列表

Golang語言標準庫完整包列表如下(以包名首字母順序排列)。

父目錄 包名 描述
bufio 實現緩衝的I/O
bytes 提供了對字節切片操作的函數
crypto 收集了常見的加密常數
errors 實現了操作錯誤的函數
Expvar 爲公共變量提供了一個標準的接口,如服務器中的運算計數器
flag 實現了命令行標記解析
fmt 實現了格式化輸入輸出
hash 提供了哈希函數接口
html 實現了一個HTML5兼容的分詞器和解析器
image 實現了一個基本的二維圖像庫
io 提供了對I/O原語的基本接口
log 它是一個簡單的記錄包,提供最基本的日誌功能
math 提供了一些基本的常量和數學函數
mine 實現了部分的MIME規範
net 提供了一個對UNIX網絡套接字的可移植接口,包括TCP/IP、UDP域名解析和UNIX域套接字
os 爲操作系統功能實現了一個平臺無關的接口
path 實現了對斜線分割的文件名路徑的操作
reflect 實現了運行時反射,允許一個程序以任意類型操作對象
regexp 實現了一個簡單的正則表達式庫
runtime 包含與Go運行時系統交互的操作,如控制goroutine的函數
sort 提供對集合排序的基礎函數集
strconv 實現了在基本數據類型和字符串之間的轉換
strings 實現了操作字符串的簡單函數
sync 提供了基本的同步機制,如互斥鎖
syscall 包含一個低級的操作系統原語的接口
testing 提供對自動測試Go包的支持
time 提供測量和顯示時間的功能
unicode Unicode編碼相關的基礎函數
archive tar 實現對tar壓縮文檔的訪問
archive zip 提供對ZIP壓縮文檔的讀和寫支持
compress bzip2 實現了bzip2解壓縮
compress flate 實現了RFC 1951中所定義的DEFLATE壓縮數據格式
compress gzip 實現了RFC 1951中所定義的gzip格式壓縮文件的讀和寫
compress lzw 實現了Lempel-Ziv-Welch編碼格式的壓縮的數據格式
compress zlib 實現了RFC 1950中所定義的zlib格式壓縮數據的讀和寫
container heap 提供了實現heap.Interface接口的任何類型的堆操作
container list 實現了一個雙鏈表
container ring 實現了對循環鏈表的操作
crypto aes 實現了AES加密(以前的Rijndael),詳見美國聯邦信息處理標準(197號文)
crypto cipher 實現了標準的密碼塊模式,該模式可包裝進低級的塊加密實現中
crypto des 實現了數據加密標準(Data Encryption Standard,DES)和三重數據加密算法法(Triple Data Encryption Algorithm,TDEA)
crypto dsa 實現了FIPS 186-3所定義的數據簽名算法(Digital Signature Algorithm)
crypto ecdsa 實現了FIPS 186-3所定義的橢圓曲線數據簽名算法(Elliptic Curve Digital Signature Algorithm)
crypto elliptic 實現了素數域上幾個標準的橢圓曲線
crypto hmac 實現了鍵控哈希消息身份驗證碼(Keyed-Hash Message Authentication Code,HMAC)
crypto md5 實現了RFC 1321中所定義的MD5哈希算法
crypto rand 實現了一個加密安全的僞隨機數生成器
crypto rc4 實現了RC4加密,其定義見Bruce Schneier的應用密碼學(Applied Cryptography)
crypto rsa 實現了PKCS#1中所定義的RSA加密
crypto sha1 實現了RFC 3174中所定義的SHA1哈希算法
crypto sha256 實現了FIPS 180-2中所定義的SHA224和SHA256哈希算法
crypto sha512 實現了FIPS 180-2中所定義的SHA384和SHA512哈希算法
crypto subtle 實現了一些有用的加密函數,但需要仔細考慮以便正確應用它們
crypto tls 部分實現了RFC 4346所定義的TLS 1.1協議
crypto x509 可解析X.509編碼的鍵值和證書
crypto x509/pkix 包含用於對X.509證書、CRL和OCSP的ASN.1解析和序列化的共享的、低級的結構
database sql 圍繞SQL提供了一個通用的接口
database sql/driver 定義了數據庫驅動所需實現的接口,同sql包的使用方式
debug dwarf 提供了對從可執行文件加載的DWARF調試信息的訪問,這個包對於實現Go語言的調試器非常有價值
debug elf 實現了對ELF對象文件的訪問。ELF是一種常見的二進制可執行文件和共享庫的文件格式。Linux採用了ELF格式
debug gosym 訪問Go語言二進制程序中的調試信息。對於可視化調試很有價值
debug macho 實現了Mach-O對文件的訪問
debug pe 實現了對PE(Microsoft Windows Portable Executable)文件的訪問
encoding ascii85 實現了ascii85數據編碼,用於btoa工具和Adobe’s PostScript以及PDF文檔格式
encoding asn1 實現瞭解析DER編碼的ASN.1數據結構,其定義見ITU-T Rec X.690
encoding base32 實現了RFC 4648中所定義的base32編碼
encoding base64 實現了RFC 4648中所定義的base64編碼
encoding binary 實現了在無符號整數值和字節串之間的轉化,以及對固定尺寸值的讀和寫
encoding csv 可讀和寫由逗號分割的數值(csv)文件
encoding gob 管理gob流——在編碼器(發送者)和解碼器(接收者)之間進行二進制值交換
encoding hex 實現了十六進制的編碼和解碼
encoding json 實現了定義於RFC 4627中的JSON對象的編碼和解碼
encoding pem 實現了PEM(Privacy Enhanced Mail)數據編碼
encoding xml 實現了一個簡單的可理解XML名字空間的XML 1.0解析器
go ast 聲明瞭用於展示Go包中的語法樹類型
go build 提供了構建Go包的工具
go doc 從一個Go AST(抽象語法樹)中提取源代碼文檔
go parser 實現了一個Go源文件解析器
go printer 實現了對AST(抽象語法樹)的打印
go scanner 實現了一個Go源代碼文本的掃描器
go token 定義了代表Go編程語言中詞法標記以及基本操作標記(printing、predicates)的常量
hash adler32 實現了Adler-32校驗和
hash crc32 實現了32位的循環冗餘校驗或CRC-32校驗和
hash crc64 實現了64位的循環冗餘校驗或CRC-64校驗和
hash fnv 實現了Glenn Fowler、Landon Curt Noll和Phong Vo所創建的FNV-1和FNV-1a未加密哈希函數
html template 它自動構建HTML輸出,並可防止代碼注入
image color 實現了一個基本的顏色庫
image draw 提供一些做圖函數
image gif 實現了一個GIF圖像解碼器
image jpeg 實現了一個JPEG圖像解碼器和編碼器
image png 實現了一個PNG圖像解碼器和編碼器
index suffixarray 通過構建內存索引實現的高速字符串匹配查找算法
io ioutil 實現了一些實用的I/O函數
log syslog 提供了對系統日誌服務的簡單接口
Math big 實現了多精度的算術運算(大數)
Math cmplx 爲複數提供了基本的常量和數學函數
Math rand 實現了僞隨機數生成器
mime multipart 實現了在RFC 2046中定義的MIME多個部分的解析
net http 提供了HTTP客戶端和服務器的實現
net mail 實現了對郵件消息的解析
net rpc 提供了對一個來自網絡或其他I/O連接的對象可導出的方法的訪問
net smtp 實現了定義於RFC 5321中的簡單郵件傳輸協議(Simple Mail Transfer Protocol)
net textproto 實現了在HTTP、NNTP和SMTP中基於文本的通用的請求/響應協議
net url 解析URL並實現查詢轉義
net http/cgi 實現了定義於RFC 3875中的CGI(通用網關接口)
net http/fcgi 實現了FastCGI協議
net http/httptest 提供了一些HTTP測試應用
net http/httputil 提供了一些HTTP應用函數,這些是對net/http包中的東西的補充,只不過相對不太常用
net http/pprof 通過其HTTP服務器運行時提供性能測試數據,該數據的格式正是pprof可視化工具需要的
net rpc/jsonrpc 爲rpc包實現了一個JSON-RPC ClientCodec和ServerCodec
os exec 可運行外部命令
os user 通過名稱和id進行用戶賬戶檢查
path filepath 實現了以與目標操作系統定義文件路徑相兼容的方式處理文件名路徑
regexp syntax 將正則表達式解析爲語法樹
runtime debug 包含當程序在運行時調試其自身的功能
runtime pprof 以pprof可視化工具需要的格式寫運行時性能測試數據
sync atomic 提供了低級的用於實現同步算法的原子級的內存機制
testing iotest 提供一系列測試目的的類型,實現了Reader和Writer標準接口
testing quick 實現了用於黑箱測試的實用函數
testing script 幫助測試使用通道的代碼
text scanner 爲UTF-8文本提供了一個掃描器和分詞器
text tabwriter 實現了一個寫篩選器(tabwriter.Writer),它可將一個輸入的tab分割的列翻譯爲適當對齊的文本
text template 數據驅動的模板引擎,用於生成類似HTML的文本輸出格式
text template/parse 爲template構建解析樹
text unicode/utf16 實現了UTF-16序列的的編碼和解碼
text unicode/utf8 實現了支持以UTF-8編碼的文本的函數和常數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章