Biblioteca uuid para Go: guía completa para generar UUID
1. ¿Qué es y para qué sirve?
UUID (Identificador Único Universal) es un estándar de identificación utilizado en el desarrollo de software para crear identificadores únicos sin necesidad de un coordinador centralizado. En el ecosistema Go, la biblioteca github.com/google/uuid es el estándar de facto para trabajar con UUID. Proporciona herramientas robustas y eficientes para generar, analizar y comparar UUID de diferentes versiones.
¿Para qué sirve esta biblioteca? En los sistemas distribuidos modernos, la arquitectura de microservicios y las bases de datos, a menudo es necesario crear identificadores únicos que no entren en conflicto entre diferentes nodos del sistema. UUID resuelve este problema: puedes generar identificadores en el cliente, servidor o en cualquier otro lugar sin temor a colisiones. La biblioteca google/uuid soporta UUID versiones 1 (basada en tiempo y dirección MAC), 4 (aleatorios) y 5 (basada en hash SHA-1).
Esta biblioteca se utiliza activamente en proyectos como Kubernetes, Docker, CockroachDB y muchos otros. Está optimizada para alto rendimiento, soporta generación segura para subprocesos y ofrece una API cómoda para todas las operaciones principales con UUID.
2. Instalación
Para instalar la biblioteca, ejecuta el siguiente comando en tu terminal:
go get github.com/google/uuid
Luego, importa el paquete en tu código:
import "github.com/google/uuid"
Asegúrate de tener instalado Go versión 1.16 o superior. Si usas Go modules (recomendado), la biblioteca se agregará automáticamente a tus archivos go.mod y go.sum.
3. Inicio rápido — ejemplo mínimo funcional
Aquí tienes el ejemplo más simple para generar un UUID versión 4 (aleatorio):
package main
import (
"fmt"
"github.com/google/uuid"
)
func main() {
// Generamos un nuevo UUID versión 4
id := uuid.New()
fmt.Println("UUID generado:", id.String())
// Verificamos que es realmente un UUID
fmt.Println("Tipo de UUID:", id.Version())
fmt.Println("Variante de UUID:", id.Variant())
}
La salida del programa se verá similar a esto:
UUID generado: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
Tipo de UUID: 4
Variante: RFC 4122
4. Métodos y funciones principales
4.1. uuid.New()
Firma: func New() UUID
Descripción: Genera un nuevo UUID versión 4 (aleatorio). Es el método más popular para crear identificadores únicos. Utiliza un generador de números aleatorios criptográficamente seguro.
package main
import (
"fmt"
"github.com/google/uuid"
)
func main() {
id := uuid.New()
fmt.Printf("UUID: %s\n", id.String())
fmt.Printf("Versión: %d\n", id.Version())
fmt.Printf("Variante: %d\n", id.Variant())
}
4.2. uuid.NewUUID()
Firma: func NewUUID() (UUID, error)
Descripción: Genera un UUID versión 1 basado en la hora actual y la dirección MAC. Puede devolver un error si no se puede obtener la dirección MAC.
package main
import (
"fmt"
"log"
"github.com/google/uuid"
)
func main() {
id, err := uuid.NewUUID()
if err != nil {
log.Fatal("Error al generar UUID:", err)
}
fmt.Printf("UUID v1: %s\n", id.String())
fmt.Printf("Hora de creación: %v\n", id.Time())
fmt.Printf("Dirección MAC: %x\n", id.Node())
}
4.3. uuid.NewRandom()
Firma: func NewRandom() (UUID, error)
Descripción: Similar a New(), pero devuelve un error si no se puede obtener un número aleatorio