go - 有没有用 Go 语言生成 UUID 的方法?

标签 go uuid

我的代码如下所示:

u := make([]byte, 16)
_, err := rand.Read(u)
if err != nil {
    return
}

u[8] = (u[8] | 0x80) & 0xBF // what does this do?
u[6] = (u[6] | 0x40) & 0x4F // what does this do?

return hex.EncodeToString(u)

它返回一个长度为 32 的字符串,但我认为它不是有效的 UUID。如果是真正的UUID,为什么是UUID,修改u[8]u[6]的值的代码的目的是什么?

有没有更好的方法来生成 UUID?

最佳答案

Google 有一个官方实现:https://github.com/google/uuid

生成版本 4 UUID 的工作方式如下:

package main

import (
    "fmt"
    "github.com/google/uuid"
)

func main() {
    id := uuid.New()
    fmt.Println(id.String())
}

在这里试试:https://play.golang.org/p/6YPi1djUMj9

关于go - 有没有用 Go 语言生成 UUID 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15130321/

相关文章:

Go:匿名函数只取范围内的最后一个值

ruby-on-rails - 在 Rails 中,如何创建将更改主键类型的迁移?

php - 使用 PHP 和 UUID 跟踪动态网页状态

postgresql - pg_dump 并加载带有 UUID 列的表 PostgreSQL

iphone - 如何在 Objective-C (iOS) 中创建 UUID 类型 1

去 : cors - Http Status 503 - No 'Access-Control-Allow-Origin' header is present on the requested resource

go - 利用goroutines和channel进行从上到下的树构建功能

mysql - Rails 服务器未在 Rails 3.1.2 上启动

go - 不能在 func 参数中使用 bytes.Buffer 作为 io.WriterAt 类型

ember.js - 使用 emberJS 和 Handlebars 显示来自 promise 的 map