Comment générer un UUID en Go ? Pas de fonction intégrée ?
Bonjour à tous ! Je viens de commencer à apprendre Go et j'ai rencontré un problème : je dois générer des identifiants uniques (UUID) pour les enregistrements dans une base de données. En Python, j'avais l'habitude d'utiliser `uuid.uuid4()`, mais en Go, malgré mes recherches dans la bibliothèque standard, je n'ai rien trouvé de similaire. Seulement `crypto/rand` pour les nombres aléatoires et `fmt.Sprintf` pour le formatage.
J'ai essayé d'écrire ma propre implémentation — simplement générer 16 octets aléatoires et placer manuellement les tirets, comme dans le format standard UUID. Mais d'une part, cela semble maladroit, et d'autre part, je ne suis pas sûr que les octets correspondent à la version 4 de l'UUID (aléatoire). Mon code :
```go
package main
import (
"crypto/rand"
"fmt"
)
func main() {
b := make([]byte, 16)
_, err := rand.Read(b)
if err != nil {
panic(err)
}
uuid := fmt.Sprintf("%x-%x-%x-%x-%x", b[0:4], b[4:6], b[6:8], b[8:10], b[10:])
fmt.Println(uuid)
}
```
Ce code fonctionne, mais il ne définit pas correctement la version et la variante de l'UUID (bits