guid.go 360 B

12345678910111213141516171819202122
  1. package guid
  2. import (
  3. "crypto/rand"
  4. "fmt"
  5. "io"
  6. )
  7. type GUID [16]byte
  8. func New() GUID {
  9. g := GUID{}
  10. _, err := io.ReadFull(rand.Reader, g[:])
  11. if err != nil {
  12. panic(err)
  13. }
  14. return g
  15. }
  16. func (g GUID) String() string {
  17. return fmt.Sprintf("%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x-%02x", g[3], g[2], g[1], g[0], g[5], g[4], g[7], g[6], g[8:10], g[10:])
  18. }