Google 的 uuid 库是一个用于生成和操作 UUID(Universally Unique Identifier,通用唯一标识符) 的 Go 语言开源库,支持 UUID 的多个版本(v1-v5)。它提供简洁的 API,适合需要唯一标识符的分布式系统、数据库主键、日志追踪等场景。
生成 UUID
package main
import (
"fmt"
"github.com/google/uuid"
)
funcmain() {
// 生成 v4 UUID
id := uuid.New()
fmt.Println("UUID v4:", id)
// 生成 v1 UUID
idV1, _ := uuid.NewUUID()
fmt.Println("UUID v1:", idV1)
}
解析与格式化
// 字符串解析
s := "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
parsedUUID, err := uuid.Parse(s)
if err != nil {
panic(err)
}
fmt.Println("Parsed UUID:", parsedUUID)
// 转换为字节数组
bytes := parsedUUID[:]
比较与零值检查
uuid1 := uuid.New()
uuid2 := uuid.New()
fmt.Println("Equal?", uuid1 == uuid2) // false
zeroUUID := uuid.UUID{}
fmt.Println("Is zero?", zeroUUID == uuid.Nil) // true
crypto/rand 生成随机数,满足加密安全要求。BINARY(16) 代替字符串节省空间。// 使用 DNS 命名空间生成 UUID v5
namespaceDNS := uuid.MustParse("6ba7b810-9dad-11d1-80b4-00c04fd430c8")
name := "example.com"
uuidV5 := uuid.NewSHA1(namespaceDNS, []byte(name))
fmt.Println("UUID v5:", uuidV5)
Google 的 uuid 库以简洁的 API 和可靠性成为 Go 生态中 UUID 生成的首选。无论是需要随机性(v4)还是基于命名空间的标识符(v3/v5),它都能满足需求,且适合高并发场景。使用时注意版本特性,结合业务需求选择即可。
[1]GitHub - google/uuid: Go package for UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services.: https://github.com/google/uuid