Menggunakan Pengecam Kosong dalam Go Imports untuk Permulaan
Spesifikasi Go mengesyorkan menggunakan pengecam kosong sebagai nama pakej yang jelas untuk mengimport pakej semata-mata untuk kesan sampingannya. Walau bagaimanapun, tujuan binaan ini mungkin tidak jelas.
Satu kes penggunaan sebenar adalah untuk memulakan pemacu pangkalan data tanpa menggunakan fungsi eksport mereka. Pertimbangkan contoh berikut:
package main import ( _ "github.com/jackc/pgx/v4/reflect" "github.com/jackc/pgx/v4" ) func main() { conn, err := pgx.Connect(ctx, "user=jack password=secret database=world") if err != nil { log.Fatal(err) } _ = conn }
Dalam coretan ini, import _ "github.com/jackc/pgx/v4/reflect" menyediakan sambungan pangkalan data dengan memulakan pemacu PostgreSQL dengan fungsi init. Memandangkan kami tidak perlu menggunakan mana-mana fungsi yang dieksport bagi pakej reflect, kami menggunakan pengecam kosong dan bukannya alias pakej.
Contoh lain ialah menyediakan keadaan global:
package main import ( _ "github.com/go-redis/redis/v9" "log" ) func init() { // Set up global Redis client client := redis.NewClient(redis.Options{ Addr: "localhost:6379", }) if err := client.Ping().Err(); err != nil { log.Fatalf("unable to connect to Redis: %v", err) } clientInfo, err := client.Info("Memory").Result() if err != nil { log.Fatalf("unable to get Redis info: %v", err) } log.Printf("Redis info: %s", clientInfo) } func main() { // Do stuff with the initialized global Redis client }
Di sini, import _ "github.com/go-redis/redis/v9" menggunakan fungsi init untuk mewujudkan sambungan Redis global. Dengan menggunakan pengecam kosong, kami mengelak daripada menggunakan alias pakej dan membenarkan pengkompil mengabaikannya, sementara masih mendapat manfaat daripada pengamulaan.
Atas ialah kandungan terperinci Bila dan Mengapa Menggunakan Pengecam Kosong dalam Go Imports?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!