id.go (489B)
1 package yuid 2 3 import "errors" 4 5 const IDSize = 20 6 7 type ID [IDSize]byte 8 9 //goland:noinspection GoUnusedGlobalVariable 10 var ( 11 // Nil is a nil ID. 12 Nil ID 13 ) 14 15 var ( 16 ErrInvalidIDLength = errors.New("invalid id length") 17 ) 18 19 func FromString(s string) (ID, error) { 20 return FromBytes([]byte(s)) 21 } 22 23 func FromBytes(b []byte) (ID, error) { 24 if len(b) != IDSize { 25 return Nil, ErrInvalidIDLength 26 } 27 var id ID 28 copy(id[:], b) 29 return id, nil 30 } 31 32 func (id ID) String() string { 33 return string(id[:]) 34 }