17 lines
363 B
Go
17 lines
363 B
Go
package util
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"fmt"
|
|
)
|
|
|
|
// NewUUID generates a random UUIDv4 string.
|
|
func NewUUID() string {
|
|
var b [16]byte
|
|
rand.Read(b[:]) //nolint:errcheck
|
|
b[6] = (b[6] & 0x0f) | 0x40 // version 4
|
|
b[8] = (b[8] & 0x3f) | 0x80 // variant 10xx
|
|
return fmt.Sprintf("%08x-%04x-%04x-%04x-%012x",
|
|
b[0:4], b[4:6], b[6:8], b[8:10], b[10:16])
|
|
}
|