code: func (u *UUID) UnmarshalText(text []byte) (err error) {
  	if len(text) < 32 {
  		err = fmt.Errorf("uuid: UUID string too short: %s", text)
  		return
  	}
  
  	t := text[:]
  
  	if bytes.Equal(t[:9], urnPrefix) {
  		t = t[9:]
  	} else if t[0] == '{' {
  		t = t[1:]
  	}
  
  	b := u[:]
  
  	for _, byteGroup := range byteGroups {
  		if t[0] == '-' {
  			t = t[1:]
  		}
  
  		if len(t) < byteGroup {
  			err = fmt.Errorf("uuid: UUID string too short: %s", text)
  			return
  		}
  
  		_, err = hex.Decode(b[:byteGroup/2], t[:byteGroup])
  
  		if err != nil {
  			return
  		}
  
  		t = t[byteGroup:]
  		b = b[byteGroup/2:]
  	}
  
  	return
  }
docs: // UnmarshalText implements the encoding.TextUnmarshaler interface.
  // Following formats are supported:
  // "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
  // "{6ba7b810-9dad-11d1-80b4-00c04fd430c8}",
  // "urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8"