Как получить uuid в виде "9e316d9e-a018fdc02a8352dea61ffd1d"? - PullRequest
0 голосов
/ 26 февраля 2020

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

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

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

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

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

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

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


Редактировать:

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

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

Playground

0 голосов
/ 26 февраля 2020

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

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

...