4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UUIDとは?GoでUUIDを生成する

Last updated at Posted at 2024-09-17

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

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?