在Go語言的安裝文件里包含了一些可以直接使用的包,即標準庫。Go語言的標準庫(通常被稱為語言自帶的電池),提供了清晰的構建模塊和公共接口,包含 I/O 操作、文本處理、圖像、密碼學、網絡和分布式應用程序等,并支持許多標準化的文件格式和編解碼協議。
在 Windows 下,標準庫的位置在Go語言根目錄下的子目錄 pkg\\windows\_amd64 中;在 Linux 下,標準庫在Go語言根目錄下的子目錄 pkg\\linux\_amd64 中(如果是安裝的是 32 位,則在 linux\_386 目錄中)。一般情況下,標準包會存放在 $GOROOT/pkg/$GOOS\_$GOARCH/ 目錄下。
Go語言的編譯器也是標準庫的一部分,通過詞法器掃描源碼,使用語法樹獲得源碼邏輯分支等。Go語言的周邊工具也是建立在這些標準庫上。在標準庫上可以完成幾乎大部分的需求。
Go語言的標準庫以包的方式提供支持,下表列出了Go語言標準庫中常見的包及其功能。
:-: Go語言標準庫常用的包及功能
| Go語言標準庫包名 | 功能 |
| --- | --- |
| bufio | 帶緩沖的 I/O 操作 |
| bytes| 實現字節操作 |
| container | 封裝堆、列表和環形列表等容器 |
| crypto | 加密算法 |
| database | 數據庫驅動和接口 |
| debug | 各種調試文件格式訪問及調試功能 |
| encoding | 常見算法如 JSON、XML、Base64 等 |
| flag | 命令行解析 |
| fmt | 格式化操作 |
| go | Go語言的詞法、語法樹、類型等。可通過這個包進行代碼信息提取和修改 |
| html | HTML 轉義及模板系統 |
| image | 常見圖形格式的訪問及生成 |
| io | 實現 I/O 原始訪問接口及訪問封裝 |
| math | 數學庫 |
| net | 網絡庫,支持 Socket、HTTP、郵件、RPC、SMTP 等 |
| os | 操作系統平臺不依賴平臺操作封裝 |
| path | 兼容各操作系統的路徑操作實用函數 |
| plugin | Go 1.7 加入的插件系統。支持將代碼編譯為插件,按需加載 |
| reflect |語言反射支持。可以動態獲得代碼中的類型信息,獲取和修改變量的值 |
| regexp | 正則表達式封裝 |
| runtime | 運行時接口 |
|sort | 排序接口 |
|strings | 字符串轉換、解析及實用函數 |
| time | 時間接口|
| text |文本模板及 Token 詞法器 |
當然,優秀第三方資源也是語言生態圈的重要組成部分。近年來崛起的幾門語言中,Go 算是獨樹一幟,大批優秀作品頻繁涌現,這也給我們學習 Go 提供了很好的參照。
下面是整理的第三方包的地址和功能,后續的會繼續新增常用的第三的包。
:-: 第三方包地址以及功能
| 第三方包地址 | 功能 |
| --- | --- |
| github.com/astaxie/beego | 成熟穩定的Web框架 |
| github.com/go-redis/redis| 鏈接redis|
| github.com/gomodule/redigo/redis| 鏈接redis|
|github.com/jinzhu/gorm|數據庫ORM框架 類似Java領域的Hibernate或MyBatis|
|github.com/sirupsen/logrus|日志框架,類似Java領域的log4j|
|github.com/robfig/cron|定時任務,類似Java領域的Quartz|
|github.com/gin-gonic/gin |精巧高效的Web框架,多用于提供Web服務 |