Como gerar UUID em Go? Não tem função embutida?
Olá a todos! Comecei a estudar Go agora e me deparei com uma tarefa: preciso gerar identificadores únicos (UUID) para registros no banco de dados. Em Python, estou acostumado a usar `uuid.uuid4()`, mas em Go, por mais que procurei na biblioteca padrão, não encontrei nada parecido. Apenas `crypto/rand` para números aleatórios e `fmt.Sprintf` para formatação.
Tentei escrever minha própria implementação — apenas gerar 16 bytes aleatórios e colocar os hífens manualmente, como no formato padrão de UUID. Mas, primeiro, parece deselegante e, segundo, não tenho certeza se os bytes vão corresponder à versão 4 do UUID (aleatório). Meu 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)
}
```
Esse código funciona, mas ele não define a versão e o variant corretos do UUID (os bits