Go語言內建包使用技巧全攻略!

2023.10.14

Go語言內建包使用技巧全攻略!


Go 語言內建了許多常用的套件,合理利用可以大幅提升開發效率。本文對其中一部分進行了簡要概述,希望可以幫助大家更好地使用Go 語言的內建包。

Go 語言常用內建套件簡介

一、概述

Go 語言內建了許多常用功能的套件,可以直接用於專案開發。熟練內建包可以大大提高Go 語言程式設計效率。

本文將簡要介紹Go 語言中一些常用的內建套件,包括

  • fmt 包:格式化與列印
  • os 套件:平台相關功能
  • io 套件:輸入輸出操作
  • bufio 包:快取IO
  • net/http 套件:HTTP 網路通信
  • encoding 套件:資料編碼與解碼
  • flag 套件:命令列參數解析
  • reflect 包:反射機制
  • sort 包:排序功能
  • testing 套件:測試框架

二、fmt 包

fmt 套件實作格式化IO 的相關功能:

  • Print 系列函數列印輸出
  • Scan 系列函數格式化輸入
  • Sprintf 格式化字串拼接
  • Errorf 錯誤建立

三、os 包

os 套件提供與平台相關的功能:

  • 文件操作:開啟、刪除、重新命名文件
  • 目錄操作:建立、刪除目錄
  • 環境變數:取得並設定環境變數
  • 進程/命令操作:啟動進程等

使用os 套件可以編寫跨平台的程式碼。

四、io 包

io 套件提供基本的IO 原語:

  • Reader/Writer 接口
  • Pipe 管道通信
  • EOF 結束標誌
  • LimitedReader 按限制讀取

io 套件定義了所有IO 操作的抽象介面。

五、bufio 包

bufio 實作緩衝的IO 操作:

  • 緩衝讀寫提高效率
  • Read、Write 系列方法
  • 自訂緩衝讀寫對象
  • 可擴展緩衝

適用於IO 操作優化。

六、net/http 套件

net/http 套件提供HTTP 用戶端和伺服器實作:

  • Client 發送請求
  • Server 處理請求
  • Transport 底層傳輸
  • 回應/請求對象
  • 超時機制

很多Web 服務都是建立在net/http 套件上的。

七、encoding 包

encoding 實作各種資料編碼與解碼:

  • JSON 編碼與解碼
  • XML 編碼與解碼
  • Base64 編碼與解碼

日常編碼轉換場景都可以用encoding 套件。 

八、flag 包

flag 包實現命令列參數解析:

  • 定義命令列flag 參數
  • 解析命令行入參
  • 常用flag 類型(bool、int 等)
  • 自訂flag 類型

很多CLI 工具都會用到flag 套件。

九、reflect 包

reflect 實作反射機制:

  • TypeOf 反射類型訊息
  • ValueOf 反射值訊息
  • 透過反射設定變數
  • 反射調用方法

反射是動態語言的重要能力。

十、sort 包

sort 包實現各種資料排序:

  • 對內建類型切片排序
  • 對自訂類型排序
  • 多條件排序
  • 穩定性排序

只要實作幾個介面就可以排序。

十一、testing 包

testing 提供測試功能:

  • 新增測試用例
  • 運行測試、產生報告
  • 覆蓋率計算
  • benchmark 壓力測試
  • mock 數據

可以編寫單元測試等。

總結

Go 語言內建了許多常用的套件,合理利用可以大幅提升開發效率。本文對其中一部分進行了簡要概述,希望可以幫助大家更好地使用Go 語言的內建包。