UUIDとは?
UUIDとはUniversally Unique Identifierの略で、一意に情報を識別するための識別子です。
フォーマットも定められています。
- 16進数形式: 32桁の16進数(数字とアルファベット)
- ハイフンで区切られた形式: 8桁-4桁-4桁-4桁-12桁、合計で36文字(32桁の16進数と4つのハイフン)
例)123e4567-e89b-12d3-a456-426614174000
以上を満たすような文字列をUUIDとし、事実上世界中で重複しないためユニークなIDとして扱うことができます。
UUIDとUIDの違いは、グローバルで一意であるのがUUID、特定のシステムで一意であるのがUIDです。
バージョンとは?
UUIDには、生成方法が異なる複数のバージョンがあり、v1からv8まで存在します。その中でも、おそらく一番多く使われているのはv4です。v4はランダムなUUIDを生成したい場合に一般的に利用されます。用途に応じて適切なバージョンを選定することが望ましいですが、本記事では各バージョンの詳細には触れません。詳しく知りたい方はドキュメントなどを読んでいただきたいです。参考
golangでUUIDを生成する
goのuuidパッケージを使ってUUIDを生成する方法を紹介します。
func New() UUID
この関数は、ランダムなUUIDかパニックを返します。通常、v4のUUIDになります。
func NewRandom() (UUID, error)
この関数は、ランダムなv4のUUIDかエラーを返します。
uuid.Must(uuid.NewRandom())
という書き方で、uuid.New()と同義になります。
その他のバージョンの生成方法については以下のドキュメントを参考にしてください。
参考ドキュメント:
https://pkg.go.dev/github.com/google/uuid#section-readme
UUID↔stringの変換
UUIDを文字列に変換したり、逆に文字列をUUIDに変換することができます。
UUID→string
func (uuid UUID) String() string
StringはUUIDを文字列に変換できます。UUIDが無効の場合は空文字になります。
func NewString() string
ちなみにNewStringはランダムなUUIDを生成+文字列で受け取ることができます。
string→UUID
func Parse(s string) (UUID, error)
Parseは文字列からUUIDに変換し、形式が適切でなかった場合はエラーを返します。
func MustParse(s string) UUID
MustParse は Parse に似ていますが、文字列を解析できない場合はパニックになります。
参考
https://www.rfc-editor.org/rfc/rfc9562#name-introductio
https://pkg.go.dev/github.com/google/uuid#section-readme