標準庫包分類
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 | 實現了對郵件消息的解析 | |
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編碼的文本的函數和常數 |