Я знаю, как получить uuid в форме uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,, но мне нужно получить uuid в форме "9e316d9e-a018fdc02a8352dea61ffd1d".

Я использую https://github.com/satori/go.uuid.

Я пытался, но не могу найти элемент для поиска в Google. (Если вы знаете элемент поиска, то это очевидно).

0
John Hass 26 Фев 2020 в 09:46

2 ответа

Лучший ответ

Вы можете сделать это в одну строку:

// var u uuid.UUID
fmt.Sprintf("%x-%x", u[:4], u[4:])

Детская площадка пример.


< Сильный > Edit:

Так как fmt.Sprintf не самый эффективный метод кодирования, вы можете смоделировать от UUID.String () с этим:

buf := make([]byte, 33)
hex.Encode(buf, u[:4])
buf[8] = '-'
hex.Encode(buf[9:], u[4:])
return string(buf)

Детская площадка

1
colminator 26 Фев 2020 в 15:10

Это невозможно, поскольку UUID - это 16-байтовое число на определение. Но, конечно, вы можете генерировать уникальные строки длиной 8 символов с подстрокой и меткой времени Unix.

Также будьте осторожны с генерированием более длинных UUID и их подстрокой, так как некоторые части идентификатора могут содержать фиксированные байты (например, это имеет место с UUID MAC, DCE и MD5), и эта форма UUID 9e316d9e-a018fdc02a8352dea61ffd1d не имеет гарантии чтобы быть действительно уникальным.

0
sedhossein 26 Фев 2020 в 07:17