1. 程式人生 > >Golang系列中常用包

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字串,或者從JSON字串反序列化出一個具體的物件等。  
http 通過http包,只需要數行程式碼,即可實現一個爬蟲或者一個Web伺服器,這在傳統語言中是無法想象的。  

二、完整包列表

目錄 說明
  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壓縮文件的訪問
zip 提供對ZIP壓縮文件的讀和寫支援
compress bzip2 實現了bzip2解壓縮
flate 實現了RFC 1951中所定義的DEFLATE壓縮資料格式
gzip 實現了RFC 1951中所定義的gzip格式壓縮檔案的讀和寫
lzw 實現了 Lempel-Ziv-Welch編碼格式的壓縮的資料格式
zlib 實現了RFC 1950中所定義的zlib格式壓縮資料的讀和寫
container heap 提供了實現heap.Interface介面的任何型別的堆操作
lsit 實現了一個雙鏈表
ring 實現了對迴圈連結串列的操作
crypto aes 實現了AES加密(以前的Rijndael)
cipher 實現了標準的密碼塊模式,該模式可包裝進低階的塊加密實現中
des 實現了資料加密標準( Data Encryption Standard,DES)和三重資料加密演算法( TripleData Encryption Algorithm, TDEA)
dsa 實現了FIPS 186-3所定義的資料簽名演算法( Digital Signature Algorithm)
ecdsa 實現了FIPS 186-3所定義的橢圓曲線資料簽名演算法( Elliptic Curve Digital Signature
Algorithm)
elliptic 實現了素數域上幾個標準的橢圓曲線
hmac 實現了鍵控雜湊訊息身份驗證碼( Keyed-Hash Message Authentication Code,
HMAC)
md5 實現了RFC 1321中所定義的MD5雜湊演算法
rand 實現了一個加密安全的偽隨機數生成器
rc4 實現了RC4加密,其定義見Bruce Schneier的應用密碼學( Applied Cryptography)
rsa 實現了PKCS#1中所定義的RSA加密
sha1 實現了RFC 3174中所定義的SHA1雜湊演算法
sha256 實現了FIPS 180-2中所定義的SHA224和SHA256雜湊演算法
sha512 實現了FIPS 180-2中所定義的SHA384和SHA512雜湊演算法
subtle 實現了一些有用的加密函式,但需要仔細考慮以便正確應用它們
tls 部分實現了RFC 4346所定義的TLS 1.1協議
x509 可解析X.509編碼的鍵值和證書
x509/pkix 包含用於對X.509證書、 CRL和OCSP的ASN.1解析和序列化的共享的、低階的結構
database sql 圍繞SQL提供了一個通用的介面
sql/driver 定義了資料庫驅動所需實現的介面,同sql包的使用方式
debug dwarf 提供了對從可執行檔案載入的DWARF除錯資訊的訪問,這個包對於實現Go語言
的偵錯程式非常有價值
elf 實現了對ELF物件檔案的訪問。 ELF是一種常見的二進位制可執行檔案和共享庫的
檔案格式。 Linux採用了ELF格式
gosym 訪問Go語言二進位制程式中的除錯資訊。對於視覺化除錯很有價值
macho 實現了對http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/
MachORuntime/Reference/reference.html 所定義的Mach-O物件檔案的訪問
pe 實現了對PE( Microsoft Windows Portable Executable)檔案的訪問
encoding ascii85 實現了ascii85資料編碼,用於btoa工具和Adobe’s PostScript以及PDF文件格式
asn1 實現瞭解析DER編碼的ASN.1資料結構,其定義見ITU-T Rec X.690
base32 實現了RFC 4648中所定義的base32編碼
base64 實現了RFC 4648中所定義的base64編碼
binary 實現了在無符號整數值和位元組串之間的轉化,以及對固定尺寸值的讀和寫
csv 可讀和寫由逗號分割的數值( csv)檔案
gob 管理gob流——在編碼器(傳送者)和解碼器(接收者)之間進行二進位制值交換
hex 實現了十六進位制的編碼和解碼
json 實現了定義於RFC 4627中的JSON物件的編碼和解碼
pem 實現了PEM( Privacy Enhanced Mail)資料編碼
xml 實現了一個簡單的可理解XML名字空間的XML 1.0解析器
go ast 聲明瞭用於展示Go包中的語法樹型別
build 提供了構建Go包的工具
doc 從一個Go AST(抽象語法樹)中提取原始碼文件
parser 實現了一個Go原始檔解析器
printer 實現了對AST(抽象語法樹)的列印
scanner 實現了一個Go原始碼文字的掃描器
token 定義了代表Go程式語言中詞法標記以及基本操作標記( printing、 predicates)的常
hash adler32 實現了Adler-32校驗和
crc32 實現了32位的迴圈冗餘校驗或CRC-32校驗和
crc64 實現了64位的迴圈冗餘校驗或CRC-64校驗和
fnv 實現了Glenn Fowler、 Landon Curt Noll和Phong Vo所建立的FNV-1和FNV-1a未加
密雜湊函式
html template 它自動構建HTML輸出,並可防止程式碼注入
image color 實現了一個基本的顏色庫
draw 提供一些做圖函式
gif 實現了一個GIF影象解碼器
jpeg 實現了一個JPEG影象解碼器和編碼器
png 實現了一個PNG影象解碼器和編碼器
index suffixarray 通過構建記憶體索引實現的高速字串匹配查詢演算法
io ioutil 實現了一些實用的I/O函式
log syslog 提供了對系統日誌服務的簡單介面
math big 實現了多精度的算術運算(大數)
cmplx 為複數提供了基本的常量和數學函式
rand 實現了偽隨機數生成器
mime multipart 實現了在RFC 2046中定義的MIME多個部分的解析
net http 提供了HTTP客戶端和伺服器的實現
mail 實現了對郵件訊息的解析
rpc 提供了對一個來自網路或其他I/O連線的物件可匯出的方法的訪問
smtp 實現了定義於RFC 5321中的簡單郵件傳輸協議( Simple Mail Transfer Protocol)
textproto 實現了在HTTP、 NNTP和SMTP中基於文字的通用的請求/響應協議
url 解析URL並實現查詢轉義
http/cgi 實現了定義於RFC 3875中的CGI(通用閘道器介面)
http/fcgi 實現了FastCGI協議
http/httptest 提供了一些HTTP測試應用
http/httputil 提供了一些HTTP應用函式,這些是對net/http包中的東西的補充,只不過相對
不太常用
http/pprof 通過其HTTP伺服器執行時提供效能測試資料,該資料的格式正是pprof視覺化工
具需要的
rpc/jsonrpc 為rpc包實現了一個JSON-RPC ClientCodec和ServerCodec
os exec 可執行外部命令
user 通過名稱和id進行使用者賬戶檢查
path filepath 實現了以與目標作業系統定義檔案路徑相相容的方式處理檔名路徑
regexp syntax 將正則表示式解析為語法樹
runtime debug 包含當程式在執行時除錯其自身的功能
pprof 以pprof視覺化工具需要的格式寫執行時效能測試資料
sync atomic 提供了低階的用於實現同步演算法的原子級的記憶體機制
testing iotest 提供一系列測試目的的型別,實現了Reader和Writer標準介面
quick 實現了用於黑箱測試的實用函式
script 幫助測試使用通道的程式碼
text scanner 為UTF-8文字提供了一個掃描器和分詞器
tabwriter 實現了一個寫篩選器( tabwriter.Writer),它可將一個輸入的tab分割的列
翻譯為適當對齊的文字
template 資料驅動的模板引擎,用於生成類似HTML的文字輸出格式
template/parse 為template構建解析樹
unicode/utf16 實現了UTF-16序列的的編碼和解碼
unicode/utf8 實現了支援以UTF-8編碼的文字的函式和常數

參考《Go語言程式設計》


一、常用包

常用包 說明 常用函式
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字串,或者從JSON字串反序列化出一個具體的物件等。  
http 通過http包,只需要數行程式碼,即可實現一個爬蟲或者一個Web伺服器,這在傳統語言中是無法想象的。  

二、完整包列表

目錄 說明
  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壓縮文件的訪問
zip 提供對ZIP壓縮文件的讀和寫支援
compress bzip2 實現了bzip2解壓縮
flate 實現了RFC 1951中所定義的DEFLATE壓縮資料格式
gzip 實現了RFC 1951中所定義的gzip格式壓縮檔案的讀和寫
lzw 實現了 Lempel-Ziv-Welch編碼格式的壓縮的資料格式
zlib 實現了RFC 1950中所定義的zlib格式壓縮資料的讀和寫
container heap 提供了實現heap.Interface介面的任何型別的堆操作
lsit 實現了一個雙鏈表
ring 實現了對迴圈連結串列的操作
crypto aes 實現了AES加密(以前的Rijndael)
cipher 實現了標準的密碼塊模式,該模式可包裝進低階的塊加密實現中
des 實現了資料加密標準( Data Encryption Standard,DES)和三重資料加密演算法( TripleData Encryption Algorithm, TDEA)
dsa 實現了FIPS 186-3所定義的資料簽名演算法( Digital Signature Algorithm)
ecdsa 實現了FIPS 186-3所定義的橢圓曲線資料簽名演算法( Elliptic Curve Digital Signature
Algorithm)
elliptic 實現了素數域上幾個標準的橢圓曲線
hmac 實現了鍵控雜湊訊息身份驗證碼( Keyed-Hash Message Authentication Code,
HMAC)
md5 實現了RFC 1321中所定義的MD5雜湊演算法
rand 實現了一個加密安全的偽隨機數生成器
rc4 實現了RC4加密,其定義見Bruce Schneier的應用密碼學( Applied Cryptography)
rsa 實現了PKCS#1中所定義的RSA加密
sha1 實現了RFC 3174中所定義的SHA1雜湊演算法
sha256 實現了FIPS 180-2中所定義的SHA224和SHA256雜湊演算法
sha512 實現了FIPS 180-2中所定義的SHA384和SHA512雜湊演算法
subtle 實現了一些有用的加密函式,但需要仔細考慮以便正確應用它們
tls 部分實現了RFC 4346所定義的TLS 1.1協議
x509 可解析X.509編碼的鍵值和證書
x509/pkix 包含用於對X.509證書、 CRL和OCSP的ASN.1解析和序列化的共享的、低階的結構
database sql 圍繞SQL提供了一個通用的介面
sql/driver 定義了資料庫驅動所需實現的介面,同sql包的使用方式
debug dwarf 提供了對從可執行檔案載入的DWARF除錯資訊的訪問,這個包對於實現Go語言
的偵錯程式非常有價值
elf 實現了對ELF物件檔案的訪問。 ELF是一種常見的二進位制可執行檔案和共享庫的
檔案格式。 Linux採用了ELF格式
gosym 訪問Go語言二進位制程式中的除錯資訊。對於視覺化除錯很有價值
macho 實現了對http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/
MachORuntime/Reference/reference.html 所定義的Mach-O物件檔案的訪問
pe 實現了對PE( Microsoft Windows Portable Executable)檔案的訪問
encoding ascii85 實現了ascii85資料編碼,用於btoa工具和Adobe’s PostScript以及PDF文件格式
asn1 實現瞭解析DER編碼的ASN.1資料結構,其定義見ITU-T Rec X.690
base32 實現了RFC 4648中所定義的base32編碼
base64 實現了RFC 4648中所定義的base64編碼
binary 實現了在無符號整數值和位元組串之間的轉化,以及對固定尺寸值的讀和寫
csv 可讀和寫由逗號分割的數值( csv)檔案
gob 管理gob流——在編碼器(傳送者)和解碼器(接收者)之間進行二進位制值交換
hex 實現了十六進位制的編碼和解碼
json 實現了定義於RFC 4627中的JSON物件的編碼和解碼
pem 實現了PEM( Privacy Enhanced Mail)資料編碼
xml 實現了一個簡單的可理解XML名字空間的XML 1.0解析器
go ast 聲明瞭用於展示Go包中的語法樹型別
build 提供了構建Go包的工具
doc 從一個Go AST(抽象語法樹)中提取原始碼文件
parser 實現了一個Go原始檔解析器
printer 實現了對AST(抽象語法樹)的列印
scanner 實現了一個Go原始碼文字的掃描器
token 定義了代表Go程式語言中詞法標記以及基本操作標記( printing、 predicates)的常
hash adler32 實現了Adler-32校驗和
crc32 實現了32位的迴圈冗餘校驗或CRC-32校驗和
crc64 實現了64位的迴圈冗餘校驗或CRC-64校驗和
fnv 實現了Glenn Fowler、 Landon Curt Noll和Phong Vo所建立的FNV-1和FNV-1a未加
密雜湊函式
html template 它自動構建HTML輸出,並可防止程式碼注入
image color 實現了一個基本的顏色庫
draw 提供一些做圖函式
gif 實現了一個GIF影象解碼器
jpeg 實現了一個JPEG影象解碼器和編碼器
png 實現了一個PNG影象解碼器和編碼器
index suffixarray 通過構建記憶體索引實現的高速字串匹配查詢演算法
io ioutil 實現了一些實用的I/O函式
log syslog 提供了對系統日誌服務的簡單介面
math big 實現了多精度的算術運算(大數)
cmplx 為複數提供了基本的常量和數學函式
rand 實現了偽隨機數生成器
mime multipart 實現了在RFC 2046中定義的MIME多個部分的解析
net http 提供了HTTP客戶端和伺服器的實現
mail 實現了對郵件訊息的解析
rpc 提供了對一個來自網路或其他I/O連線的物件可匯出的方法的訪問
smtp 實現了定義於RFC 5321中的簡單郵件傳輸協議( Simple Mail Transfer Protocol)
textproto 實現了在HTTP、 NNTP和SMTP中基於文字的通用的請求/響應協議
url 解析URL並實現查詢轉義
http/cgi 實現了定義於RFC 3875中的CGI(通用閘道器介面)
http/fcgi 實現了FastCGI協議
http/httptest 提供了一些HTTP測試應用
http/httputil 提供了一些HTTP應用函式,這些是對net/http包中的東西的補充,只不過相對
不太常用
http/pprof 通過其HTTP伺服器執行時提供效能測試資料,該資料的格式正是pprof視覺化工
具需要的
rpc/jsonrpc 為rpc包實現了一個JSON-RPC ClientCodec和ServerCodec
os exec 可執行外部命令
user 通過名稱和id進行使用者賬戶檢查
path filepath 實現了以與目標作業系統定義檔案路徑相相容的方式處理檔名路徑
regexp syntax 將正則表示式解析為語法樹
runtime debug 包含當程式在執行時除錯其自身的功能
pprof 以pprof視覺化工具需要的格式寫執行時效能測試資料
sync atomic 提供了低階的用於實現同步演算法的原子級的記憶體機制
testing iotest 提供一系列測試目的的型別,實現了Reader和Writer標準介面
quick 實現了用於黑箱測試的實用函式
script 幫助測試使用通道的程式碼
text scanner 為UTF-8文字提供了一個掃描器和分詞器
tabwriter 實現了一個寫篩選器( tabwriter.Writer),它可將一個輸入的tab分割的列
翻譯為適當對齊的文字
template 資料驅動的模板引擎,用於生成類似HTML的文字輸出格式
template/parse 為template構建解析樹
unicode/utf16 實現了UTF-16序列的的編碼和解碼
unicode/utf8 實現了支援以UTF-8編碼的文字的函式和常數

參考《Go語言程式設計》