Golang 1.9源碼目錄結構介紹

本文是通過對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

一個跨平臺的Go程序調試工具

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

實現了一個基本的2D圖像庫

index

io

io 包為I/O原語提供了基礎的接口。它主要包裝了這些原語的已有實現,如 os 包中的那些,抽象成函數性的共享公共接口,加上一些其它相關的原語

log

主要提供了3類接口。分別是 “PrintPanicFatal”,對每一類接口其提供了3中調用方式,分別是 "Xxxx 、 Xxxxln、Xxxxf",基本和fmt中的相關函數類似

math

提供了一些基本的常量和數學函數

mime

  • multipart 包實現了MIME多部分解析,如在RFC 2046中定義。還有RFC 2045

net

提供了各種網絡IO類型,比如有TCP/IP, UDP,域名解析,Unix domain socket

os

os包提供跨平臺的接口來操作系統功能。

path

path包實現了針對操作斜線分割路徑的實用例程。

  • filepath filepath包針對操作文件名路徑實現了實用的例程,在某種程度上兼容目標操作系統定義的文件路徑。

reflect

reflect包實現了運行時反射,允許一個程序用任意類型來處理對象。

regexp

正則實現

runtime

包含和Go的運行時系統相互作用的操作,就像功能控制概念

sort

實現了3種基本的排序算法:插入排序.快排和堆排序 sort包會根據實際數據自動選擇高效的排序算法。

strconv

實現了基礎數據類型的字符串表示的轉換

strings

實現了操作字符串的簡單方法

sync

提供基礎的原始同步,如相互排斥鎖

syscall

包含一個低級的操作系統原語的接口

testing

testing包為Go包的自動化測試提供支持。

text

  • scanner 為UTF-8編碼的文本提供一個掃描儀和分解器。
  • tabwriter 實現了一個在輸入的對齊文本中轉換標簽欄的寫過濾器(tabwriter.Writer)
  • template 實現了為生成文本輸出的數據-驅動模板

time

time包為測量和顯示時間提供功能

unicode

提供數據和方法來測試一些Unicode碼的性質

  • utf16 實現了UTF-16序列的編碼和解碼。
  • utf8 實現了方法和常量來支持UTF-8文本編碼。

unsafe

包含繞過Go程序類型安全的操作

基本包括了Golang 1.9的所有源代碼目錄,由于個人經驗有限,無法做深入分析,以后有所深入了解再分享。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,739評論 18 399
  • //Clojure入門教程: Clojure – Functional Programming for the J...
    葡萄喃喃囈語閱讀 3,730評論 0 7
  • Linux中大部分時間都是在處理文本內容,而為了更加快速和自動化的處理文本,我們就需要正則表達式。正則表達式提供了...
    shenzhenboy閱讀 751評論 1 1
  • 轉眼間就到了學期末,三天后就是2017年了,回忘這一年來頗有感觸,上半年奮斗,下半年迷茫。 從高中的怪圈中走到...
    林毅舟閱讀 162評論 0 0