Go 標准庫簡介
寫下本文時,go的發行版已經來到了1.21,距離本站剛建立的時間也已經快有一年多了。
Go語言的標准庫非常的豐富(數據結構除外),功能也十分強大,API對開發人員而言十分友好,能夠熟練運用標准庫對日常開發將會有非常大的幫助。比如你可以不用任何外部依賴,僅使用net/http,html/template,database/sql這三個庫就可以開發一個獨立完整的Web項目。
標准庫的內容一直沒有更新是因為標准庫的內容實在太多了,所以下面會簡單的概括一些常用的標准庫的作用,這樣可以挑選自己感興趣的去了解,每一個標准庫的包級注釋都會詳細說明這個包是干什麼用的。
fmt,用於處理格式化輸入輸出的包html,html模板操作包net,提供一系列網絡操作的包,相當的強大flag,命令行參數解析包reflect,反射操作包log,自帶的日志包sort,排序操作包regex,正則表達式包image,圖像操作的包time,時間操作的包unicode,unicode字符集操作包unsafe,提供沒有類型限制的指針操作syscall,操作系統提供的系統調用包testing,測試包,主要是寫測試的時候用。sync,並發操作包context,上下文包strconv,字符串轉換包strings,字符串操作包bytes,字節切片操作包maps,map操作包slices,切片操作包io,定義了一系列基礎的IO接口,例如常用的Closer,Writer等,還有一些基礎的IO操作函數。io/fs,定義了一系列文件系統的接口,算是對文件系統的抽象。os,操作系統進行交互的包,提供的是一系列具體的函數,可以簡單理解為是上面兩個的具體實現。os/signal,操作系統信號包,用於監聽操作系統的信號,主要用於實現程序的優雅關閉。os/exec,操作系統命令包,用於執行操作系統命令。os/user,操作系統用戶包,用於獲取操作系統的用戶信息。bufio,有緩沖IO讀寫包。path,處理斜槓分隔路徑的包,例如url之類的。path/filepath,處理文件路徑的包。math,數學操作包math/bits,位運算操作包math/cmplx,復數操作包,也提供了一些三角函數的工具函數。math/rand,偽隨機包math/big,大數高精度計算包container/heap,最小堆的實現container/list,雙線鏈表的實現container/ring,環的實現archive/zip,zip壓縮歸檔的包archive/tar,tar歸檔文件的包compress,壓縮算法實現的包,比如gzip,flate。database/sql,與數據庫進行交互的包encoding,處理編碼的包,其下有很多子包,比如json,xml之類的,還有base64這種。crypto,處理加密的包,其下有很多子包,比如sha1,rsa等go/ast,go源代碼抽象語法樹映射的包go/parser,將go源代碼解析成抽象語法樹的包go/importer,提供了對導入器的訪問go/format,go語言格式化包areana,提供可手動分配和釋放內存的功能,處於實驗階段runtime,運行時操作包,go中有許多操作都是這個包實現的。
