Go 語言小知識:import 前的底線 _ 是做什麼用的?

更新 發佈閱讀 2 分鐘

在 Go 語言中,每個 package 都可以有一個特殊的 init() 函式,當該 package 被匯入時,這個函式就會自動執行。

對於 main package 而言,在進入 main() 之前,會先執行它本身的 init()

而在 import 其他 package 時,也只會執行該 package 的 init() 函式,其餘未被使用的內容並不會載入。


那什麼情況會用到 import _ "..." 呢?

當只需要載入某個 package 的初始化邏輯(也就是 init()),但不打算在程式中直接使用該 package 提供的函式或物件時,就可以在 import 前加上一個底線 _

這樣的寫法可以避免編譯器報錯「import 但未使用」,同時又能讓初始化邏輯生效。


範例:使用 GORM 搭配 MySQL Driver

以使用 GORM 為例,若只需要使用 MySQL 作為資料庫後端,官方建議這樣匯入:

import (
_ "github.com/go-sql-driver/mysql" // 執行 init(),但不直接使用
"github.com/jinzhu/gorm"
)

這段程式碼的作用是:

GORM 在背後會透過 init() 的方式自動註冊 MySQL driver,開發者不需手動處理,只需匯入一次即可生效。


總結

import _ "..." 是 Go 語言中一種非常實用的語法技巧,常見於:

  • 匯入資料庫 driver
  • 註冊 middleware 或 side effect plugin
  • 觸發初始化程式碼但不直接使用內容
留言
avatar-img
留言分享你的想法!
avatar-img
虎斑貓的散記
5會員
12內容數
量化研究心得,社會觀察,自我反思
你可能也想看
Thumbnail
金馬獎呼喚大家走進戲院,但Youtube、Netflix已成日常。最新研究顯示,臺灣VOD訂閱戶破700萬,年產值近百億。在全球影視產業洗牌之際,臺灣如何運用國際資金與平臺,將在地故事推向世界?專家點出,理解演算法、克服盜版、制定對接國際的政策是關鍵。
Thumbnail
金馬獎呼喚大家走進戲院,但Youtube、Netflix已成日常。最新研究顯示,臺灣VOD訂閱戶破700萬,年產值近百億。在全球影視產業洗牌之際,臺灣如何運用國際資金與平臺,將在地故事推向世界?專家點出,理解演算法、克服盜版、制定對接國際的政策是關鍵。
Thumbnail
使台劇得以突破過往印象中偶像劇、鄉土劇等範疇,產製更多類型,甚至紅到國外、帶動台灣觀光的最重要原因,便是「隨選串流平台」服務在近十年的蓬勃發展,台灣人愛看串流的程度或許比你我想像中都高,高到連美國電影協會(MPA),都委託Frontier Economics進行研究
Thumbnail
使台劇得以突破過往印象中偶像劇、鄉土劇等範疇,產製更多類型,甚至紅到國外、帶動台灣觀光的最重要原因,便是「隨選串流平台」服務在近十年的蓬勃發展,台灣人愛看串流的程度或許比你我想像中都高,高到連美國電影協會(MPA),都委託Frontier Economics進行研究
Thumbnail
在喧囂的日常中,你是否尋找能代表內心狀態的氣味?臺灣獨立調香師品牌 Sunkronizo 的「一週八日」系列香水,演繹創作者孤獨、沉靜卻自由奔放的內在。其中「星期六 Silent Wild」以綠橄欖、茶香與白麝香交織出清新、寧靜且溫暖的氣息,連結自我與世界的流動,找回那份「只是在」的和諧。
Thumbnail
在喧囂的日常中,你是否尋找能代表內心狀態的氣味?臺灣獨立調香師品牌 Sunkronizo 的「一週八日」系列香水,演繹創作者孤獨、沉靜卻自由奔放的內在。其中「星期六 Silent Wild」以綠橄欖、茶香與白麝香交織出清新、寧靜且溫暖的氣息,連結自我與世界的流動,找回那份「只是在」的和諧。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
本章節旨在教導讀者如何在 Kotlin 中引入套件。將會涵蓋如何引用第三方套件,如何引用自定義模組,以及如何創建和引用自定義套件。此外,還會列出一些常用的套件,以供讀者參考。
Thumbnail
本章節旨在教導讀者如何在 Kotlin 中引入套件。將會涵蓋如何引用第三方套件,如何引用自定義模組,以及如何創建和引用自定義套件。此外,還會列出一些常用的套件,以供讀者參考。
Thumbnail
在 TypeScript 中,套件是模組化代碼的集合,可以提高代碼的可重用性和可維護性。常見的套件包括各種庫和框架,如 lodash、express 等。以下是有關引用套件、自定義套件和常見套件的詳細介紹。
Thumbnail
在 TypeScript 中,套件是模組化代碼的集合,可以提高代碼的可重用性和可維護性。常見的套件包括各種庫和框架,如 lodash、express 等。以下是有關引用套件、自定義套件和常見套件的詳細介紹。
Thumbnail
本章節旨在介紹TypeScript的基本語法,包括一般結構、程式進入點、註解以及變數的定義和賦值。這些知識將幫助讀者瞭解TypeScript的基本架構,並且可以開始使用TypeScript進行開發。
Thumbnail
本章節旨在介紹TypeScript的基本語法,包括一般結構、程式進入點、註解以及變數的定義和賦值。這些知識將幫助讀者瞭解TypeScript的基本架構,並且可以開始使用TypeScript進行開發。
Thumbnail
成功加入Anytype之後就可以開始探索這一個開源的筆記軟體了^_^ 開始Anytype之前..... 1.刪除所有初始物件 2.思考自己的使用需求 3.不著急學會所有功能
Thumbnail
成功加入Anytype之後就可以開始探索這一個開源的筆記軟體了^_^ 開始Anytype之前..... 1.刪除所有初始物件 2.思考自己的使用需求 3.不著急學會所有功能
Thumbnail
支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。 映射關係 table->struct record->object field->attribute 安裝 go get github.com/astaxie/beego/orm​ go get github.com
Thumbnail
支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。 映射關係 table->struct record->object field->attribute 安裝 go get github.com/astaxie/beego/orm​ go get github.com
Thumbnail
MacOS 先下載Homebrew,然後輸入底下指令: brew install go 確認是否安裝完成 go version 環境設定 export GOPATH=$HOME/go
Thumbnail
MacOS 先下載Homebrew,然後輸入底下指令: brew install go 確認是否安裝完成 go version 環境設定 export GOPATH=$HOME/go
Thumbnail
Request內容 package main import ( "fmt" "log" "net/http" "strings" ) func request(w http.ResponseWriter, r *http.Request) { //這些資訊是輸出到伺服器端的列印訊息
Thumbnail
Request內容 package main import ( "fmt" "log" "net/http" "strings" ) func request(w http.ResponseWriter, r *http.Request) { //這些資訊是輸出到伺服器端的列印訊息
Thumbnail
HTTP伺服器端 package main import ( "net/http" ) type Refer struct { handler http.Handler refer string } //實現中介軟體邏輯​ func (this *Refer) ServeHTTP(
Thumbnail
HTTP伺服器端 package main import ( "net/http" ) type Refer struct { handler http.Handler refer string } //實現中介軟體邏輯​ func (this *Refer) ServeHTTP(
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News