¿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