unique.go 696 B

12345678910111213141516171819202122232425262728293031323334
  1. package gofakeit
  2. import (
  3. "encoding/hex"
  4. "math/rand"
  5. )
  6. // UUID (version 4) will generate a random unique identifier based upon random nunbers
  7. // Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  8. func UUID() string {
  9. version := byte(4)
  10. uuid := make([]byte, 16)
  11. rand.Read(uuid)
  12. // Set version
  13. uuid[6] = (uuid[6] & 0x0f) | (version << 4)
  14. // Set variant
  15. uuid[8] = (uuid[8] & 0xbf) | 0x80
  16. buf := make([]byte, 36)
  17. var dash byte = '-'
  18. hex.Encode(buf[0:8], uuid[0:4])
  19. buf[8] = dash
  20. hex.Encode(buf[9:13], uuid[4:6])
  21. buf[13] = dash
  22. hex.Encode(buf[14:18], uuid[6:8])
  23. buf[18] = dash
  24. hex.Encode(buf[19:23], uuid[8:10])
  25. buf[23] = dash
  26. hex.Encode(buf[24:], uuid[10:])
  27. return string(buf)
  28. }