uuid en Go : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Bibliothèque uuid pour Go : guide complet de génération d'UUID

1. Qu'est-ce que c'est et pourquoi l'utiliser

UUID (Universally Unique Identifier) est un standard d'identification utilisé en développement logiciel pour créer des identifiants uniques sans nécessiter de coordinateur centralisé. Dans l'écosystème Go, la bibliothèque github.com/google/uuid est la référence de facto pour travailler avec les UUID. Elle offre des outils fiables et performants pour générer, analyser et comparer des UUID de différentes versions.

Pourquoi utiliser cette bibliothèque ? Dans les systèmes distribués modernes, l'architecture microservices et les bases de données, il est souvent nécessaire de créer des identifiants uniques qui ne provoquent pas de conflits entre différents nœuds du système. L'UUID résout ce problème : vous pouvez générer des identifiants côté client, serveur ou ailleurs, sans craindre les collisions. La bibliothèque google/uuid prend en charge les UUID versions 1 (basée sur l'heure et l'adresse MAC), 4 (aléatoire) et 5 (basée sur le hachage SHA-1).

Cette bibliothèque est activement utilisée dans des projets tels que Kubernetes, Docker, CockroachDB et bien d'autres. Elle est optimisée pour des performances élevées, prend en charge la génération thread-safe et fournit une API pratique pour toutes les opérations courantes avec les UUID.

2. Installation

Pour installer la bibliothèque, exécutez la commande suivante dans votre terminal :

go get github.com/google/uuid

Ensuite, importez le package dans votre code :

import "github.com/google/uuid"

Assurez-vous d'avoir Go version 1.16 ou supérieure. Si vous utilisez Go modules (recommandé), la bibliothèque sera automatiquement ajoutée à vos fichiers go.mod et go.sum.

3. Démarrage rapide — exemple minimal fonctionnel

Voici l'exemple le plus simple pour générer un UUID version 4 (aléatoire) :

package main

import (
    "fmt"
    "github.com/google/uuid"
)

func main() {
    // Générer un nouvel UUID version 4
    id := uuid.New()
    fmt.Println("UUID généré :", id.String())
    
    // Vérifier qu'il s'agit bien d'un UUID
    fmt.Println("Type d'UUID :", id.Version())
    fmt.Println("Variante d'UUID :", id.Variant())
}

La sortie du programme ressemblera à ceci :

UUID généré : 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Type d'UUID : 4
Variante : RFC 4122

4. Méthodes et fonctions principales

4.1. uuid.New()

Signature : func New() UUID

Description : Génère un nouvel UUID version 4 (aléatoire). C'est la méthode la plus populaire pour créer des identifiants uniques. Elle utilise un générateur de nombres aléatoires cryptographiquement sécurisé.

package main

import (
    "fmt"
    "github.com/google/uuid"
)

func main() {
    id := uuid.New()
    fmt.Printf("UUID : %s\n", id.String())
    fmt.Printf("Version : %d\n", id.Version())
    fmt.Printf("Variante : %d\n", id.Variant())
}

4.2. uuid.NewUUID()

Signature : func NewUUID() (UUID, error)

Description : Génère un UUID version 1 basé sur l'heure actuelle et l'adresse MAC. Peut retourner une erreur si l'adresse MAC ne peut pas être obtenue.

package main

import (
    "fmt"
    "log"
    "github.com/google/uuid"
)

func main() {
    id, err := uuid.NewUUID()
    if err != nil {
        log.Fatal("Erreur lors de la génération de l'UUID :", err)
    }
    fmt.Printf("UUID v1 : %s\n", id.String())
    fmt.Printf("Heure de création : %v\n", id.Time())
    fmt.Printf("Adresse MAC : %x\n", id.Node())
}

4.3. uuid.NewRandom()

Signature : func NewRandom() (UUID, error)

Description : Similaire à New(), mais retourne une erreur si le générateur aléatoire échoue.

Recommendations