Golang 中生成唯一的字符串(UUID,GUID)

2020-04-17     sandag

通用唯一標識符 UUID(universally unique identifier)或全局唯一標識符 GUID (globally unique identifier)是用於標識信息的 128 位數字。

  • UUID 是唯一的(出於實用目的):它重複的機率非常接近零。
  • UUID 不依賴中央機構的註冊和分配。

UUID 的字符串表示形式由 32 個十六進位數字組成,以 5 個組顯示,由連字符 - 分隔。例如:

123e4567-e89b-12d3-a456-426655440000

UUID 生成器示例

您可以使用來自 crypto/rand 包的 rand.Read 函數來生成基本的 UUID。

b := make([]byte, 16)
_, err := rand.Read(b)
if err != nil {
log.Fatal(err)
}
uuid := fmt.Sprintf("%x-%x-%x-%x-%x",
b[0:4], b[4:6], b[6:8], b[8:10], b[10:])
fmt.Println(uuid)

輸出:

9438167c-9493-4993-fd48-950b27aad7c9

局限性

此 UUID 不符合 RFC4122 。特別是,它不包含任何版本號或變體號。

警告:如果系統底層調用失敗,則 rand.Read 調用將返回錯誤。例如,如果它在 Unix 系統上不能讀取 /dev/urandom ,或者在 Windows 系統上 CryptAcquireContext 調用失敗。

文章來源: https://twgreatdaily.com/zh-tw/bfKniXEBiuFnsJQV-lFo.html