Maison > développement back-end > Golang > Quand et pourquoi utiliser des identifiants vierges dans les importations Go ?

Quand et pourquoi utiliser des identifiants vierges dans les importations Go ?

Susan Sarandon
Libérer: 2024-11-30 21:04:14
original
110 Les gens l'ont consulté

When and Why Use Blank Identifiers in Go Imports?

Utilisation d'un identifiant vide dans les importations Go pour l'initialisation

La spécification Go recommande d'utiliser l'identifiant vide comme nom de package explicite pour importer un package uniquement pour ses effets secondaires. Cependant, le but de cette construction peut ne pas être évident.

Un cas d'utilisation réel consiste à initialiser les pilotes de base de données sans utiliser leurs fonctions exportées. Prenons l'exemple suivant :

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
}
Copier après la connexion

Dans cet extrait, l'importation _ "github.com/jackc/pgx/v4/reflect" configure une connexion à la base de données en initialisant le pilote PostgreSQL avec la fonction init. Comme nous n'avons besoin d'utiliser aucune des fonctions exportées du package Reflect, nous utilisons l'identifiant vide au lieu d'un alias de package.

Un autre exemple est la configuration de l'état 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
}
Copier après la connexion

Ici, l'import _ "github.com/go-redis/redis/v9" appelle la fonction init pour établir une connexion Redis globale. En utilisant l'identifiant vide, nous évitons d'utiliser un alias de package et permettons au compilateur de l'ignorer, tout en bénéficiant de l'initialisation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal