in uuid.go [84:106]
func ParseUUID(input string) (UUID, error) {
var u UUID
j := 0
for _, r := range input {
switch {
case r == '-' && j&1 == 0:
continue
case r >= '0' && r <= '9' && j < 32:
u[j/2] |= byte(r-'0') << uint(4-j&1*4)
case r >= 'a' && r <= 'f' && j < 32:
u[j/2] |= byte(r-'a'+10) << uint(4-j&1*4)
case r >= 'A' && r <= 'F' && j < 32:
u[j/2] |= byte(r-'A'+10) << uint(4-j&1*4)
default:
return UUID{}, fmt.Errorf("invalid UUID %q", input)
}
j += 1
}
if j != 32 {
return UUID{}, fmt.Errorf("invalid UUID %q", input)
}
return u, nil
}