Go 程式語言可讓您僅為其副作用導入包,例如初始化外部資源。這是透過使用空白標識符作為包名稱來實現的。
使用空白標識符匯入的一個實際用例是初始化資料庫驅動程式時。例如,假設您想在 Go 程式中使用 github.com/mattn/go-sqlite3 驅動程式。您可以透過使用下列語法匯入驅動程序,而無需明確使用任何驅動程式的匯出函數來實現此目的:
import _ "github.com/mattn/go-sqlite3"
此匯入語句會觸發 go-sqlite3 驅動程式的初始化。驅動程式的 init 函數,定義如下:
func init() { sql.Register("sqlite3", &SQLiteDriver{}) }
在導入套件時執行。此函數將 sqlite3 驅動程式註冊到 sql 包,使其可供您的程式使用。
由於 init 函數,使用空白標識符的導入有效。 Go 套件中的每個原始檔案都可以定義自己的 init 函數,該函數在套件中的任何其他程式碼之前執行。這允許在不需要顯式函數呼叫的情況下初始化外部資源。
當使用空白標識符導入包時,其 init 函數仍然會執行。這允許產生諸如資源初始化之類的副作用,而不會在導入包的命名空間中引入不必要的變數或函數。
以上是何時應該僅出於副作用而導入 Go 包?的詳細內容。更多資訊請關注PHP中文網其他相關文章!