Avatar ·

¿Cómo generar un UUID en Go? ¿No hay una función incorporada?

¡Hola a todos! Acabo de empezar a aprender Go y me encontré con una tarea: necesito generar identificadores únicos (UUID) para registros en una base de datos. En Python estoy acostumbrado a usar `uuid.uuid4()`, pero en Go, por más que busqué en la biblioteca estándar, no encontré nada similar. Solo `crypto/rand` para números aleatorios y `fmt.Sprintf` para formatear. Intenté escribir mi propia implementación — simplemente generar 16 bytes aleatorios y colocar los guiones manualmente, como en el formato estándar de UUID. Pero, primero, se ve torpe, y segundo, no estoy seguro de que los bytes correspondan a la versión 4 de UUID (aleatorio). Mi código: ```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) } ``` Este código funciona, pero no establece la versión y variante correctas del UUID (los bits