Avatar ·

如何在Go中生成UUID?没有内置函数吗?

大家好!我刚开始学习Go,遇到了一个任务:需要为数据库中的记录生成唯一标识符(UUID)。在Python中,我习惯使用`uuid.uuid4()`,而在Go中,无论我怎么在标准库中查找,都没有找到类似的东西。只有`crypto/rand`用于随机数,以及`fmt.Sprintf`用于格式化。 我尝试编写自己的实现——只需生成16个随机字节,然后手动添加连字符,就像标准UUID格式一样。但是,首先,这看起来很笨拙,其次,我不确定这些字节是否符合UUID版本4(随机)。我的代码: ```go package main import ( "crypto/rand" "fmt" ) func main() { b := make([]byte, 16) _, err := rand.Read(b) if err != nil { panic(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) } ``` 这段代码可以运行,但它没有设置正确的UUID版本和变体(位