如何在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版本和变体(位