Sobes.tech
Junior — Middle

Pouvez-vous expliquer le concept de 'Once' dans le langage Go et dans quels cas il est utilisé?

sobes.tech IA

Réponse de l'IA

Dans le langage Go, sync.Once est une structure qui garantit qu'une fonction spécifique ne sera exécutée qu'une seule fois, même si l'appel provient de plusieurs goroutines simultanément. Cela est utile pour l'initialisation de ressources qui doivent être créées une seule fois, comme établir une connexion à une base de données ou charger une configuration.

Exemple d'utilisation:

var once sync.Once

func initialize() {
    fmt.Println("Initialisation terminée")
}

func main() {
    for i := 0; i < 5; i++ {
        go func() {
            once.Do(initialize)
        }()
    }
    time.Sleep(time.Second) // Attendre la fin des goroutines
}

Dans cet exemple, la fonction initialize sera appelée exactement une fois, peu importe le nombre de goroutines.