本文是通過對Golang 1.9 源碼目錄結構進行介紹,并搜羅了一些與章節有關的go語言學習者的博客鏈接,期望能夠對大家從大方向上了解和學習go語言有所幫助。
archive
-
tar
tar包實現對tar歸檔文件的訪問,旨在覆蓋大部分的類型,包括GNU和BSD產生的tars。 -
zip
archive/zip包提供了zip歸檔文件的讀寫操作
bufio
實現了緩存IO。它包裝了io.Reader和 io.Writer對象,創建了另外的Reader和Writer對象,它們也實現了io.Reader和io.Writer接口,不過它們是有緩存的。該包同時為文本I/O提供了一些便利操作。
builtin
go的預聲明定義,包括go語言中常用的各種類型和方法聲明,包括變量和常量兩部分
bytes
實現了用于操作 []byte 的函數,類似于 strings 包中的函數
compress
壓縮/解壓,支持壓縮格式有:gzip、zlib、flate、lzw、bzip2等
container
包括 heap堆,list雙向鏈表,ring環形鏈表三種數據結構
context
在Go語言中,程序單元也就指的是Goroutine。每個Goroutine在執行之前,都要先知道程序當前的執行狀態,通常將這些執行狀態封裝在一個Context變量中,傳遞給要執行的Goroutine中。上下文則幾乎已經成為傳遞與請求同生存周期變量的標準方法。
crypto
解密解密算法的實現,包括md5、aes、dsa、rand、sha1等等
database
提供了各種SQL或類SQL數據庫的通用API,
debug
encoding
支持 ascii85、asn1、base32、base64、 binary、csv、 gob、hex、json、pem、xml
errors
實現了操作錯誤的函數,被其他類繼承,也可自定義錯誤
expvar
公共變量包,它可以輔助調試全局變量。為公共變量提供了一個標準的接口,如服務器中的運算計數器
flag
flag包是用來處理命令參數的。總得來說,其通過將命令行標志與某一具體變量進行綁定,開發人員通過使用該變量進行業務邏輯處理
fmt
fmt包實現了類似C語言printf和scanf的格式化I/O。
hash
html
-
template
template包實現了數據驅動的模板,用于生成可對抗代碼注入的安全HTML輸出。本包提供了和text/template包相同的接口,無論何時當輸出是HTML的時候都應使用本包,實現了一個HTML5兼容的分詞器和解析器
image
index
-
suffixarra
通過構建內存索引實現的高速字符串匹配查找算法
io
io 包為I/O原語提供了基礎的接口。它主要包裝了這些原語的已有實現,如 os 包中的那些,抽象成函數性的共享公共接口,加上一些其它相關的原語
log
主要提供了3類接口。分別是 “Print、Panic、Fatal”,對每一類接口其提供了3中調用方式,分別是 "Xxxx 、 Xxxxln、Xxxxf",基本和fmt中的相關函數類似
math
提供了一些基本的常量和數學函數
mime
-
multipart
包實現了MIME多部分解析,如在RFC 2046中定義。還有RFC 2045
net
提供了各種網絡IO類型,比如有TCP/IP, UDP,域名解析,Unix domain socket
os
os包提供跨平臺的接口來操作系統功能。
-
exec
exec包運行外部的命令。 -
signal
signal包實現了訪問輸入信號。 -
user
user包允許通過name或id進行用戶賬戶查詢
path
path包實現了針對操作斜線分割路徑的實用例程。
-
filepath
filepath包針對操作文件名路徑實現了實用的例程,在某種程度上兼容目標操作系統定義的文件路徑。
reflect
reflect包實現了運行時反射,允許一個程序用任意類型來處理對象。
regexp
runtime
包含和Go的運行時系統相互作用的操作,就像功能控制概念
sort
實現了3種基本的排序算法:插入排序.快排和堆排序 sort包會根據實際數據自動選擇高效的排序算法。
strconv
strings
sync
-
atomic
提供有用的底層原始的原子內存來實現同步算法
syscall
testing
text
-
scanner
為UTF-8編碼的文本提供一個掃描儀和分解器。 -
tabwriter
實現了一個在輸入的對齊文本中轉換標簽欄的寫過濾器(tabwriter.Writer) -
template
實現了為生成文本輸出的數據-驅動模板
time
unicode
提供數據和方法來測試一些Unicode碼的性質
-
utf16
實現了UTF-16序列的編碼和解碼。 -
utf8
實現了方法和常量來支持UTF-8文本編碼。
unsafe
基本包括了Golang 1.9的所有源代碼目錄,由于個人經驗有限,無法做深入分析,以后有所深入了解再分享。