uuid.go 320 B

1234567891011121314151617181920
  1. package utils
  2. import (
  3. "crypto/rand"
  4. "fmt"
  5. )
  6. //NewV4 Returns a new uuid v4
  7. func NewV4() string {
  8. u := [16]byte{}
  9. _, err := rand.Read(u[:16])
  10. if err != nil {
  11. panic(err)
  12. }
  13. u[8] = (u[8] | 0x80) & 0xBf
  14. u[6] = (u[6] | 0x40) & 0x4f
  15. return fmt.Sprintf("%x-%x-%x-%x-%x", u[:4], u[4:6], u[6:8], u[8:10], u[10:])
  16. }