当前位置: 首页 > 面试题库 >

有没有一种用go语言生成UUID的方法

唐烨煜
2023-03-14
问题内容

我有看起来像这样的代码:

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?


问题答案:
u[8] = (u[8] | 0x80) & 0xBF // what's the purpose ?
u[6] = (u[6] | 0x40) & 0x4F // what's the purpose ?

这些行将字节6和8的值限制在特定范围内。rand.Read返回range内的随机字节0-255,这些字节不是UUID的所有有效值。据我所知,这应该对片中的所有值进行。

如果您使用的是Linux,则可以调用/usr/bin/uuidgen

package main

import (
    "fmt"
    "log"
    "os/exec"
)

func main() {
    out, err := exec.Command("uuidgen").Output()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%s", out)
}

产生:

$ go run uuid.go 
dc9076e9-2fda-4019-bd2c-900a8284b9c4


 类似资料:
  • 问题内容: Java的UUID类生成随机的UUID。但这由字母和数字组成。对于某些应用,我们只需要数字。有没有一种方法可以生成仅由Java中的数字组成的随机UUID? 问题答案: 如果您不想使用随机数,但是带有数字的UUID仅使用: 在这种情况下,左填充为40个零… 结果为: UUID:b55081fa-9cd1-48c2-95d4-efe2db322a54 in: UUID:0241008287

  • 我正在将C#脚本移植到Spark(Scala)中,我遇到了Scala中UUID生成与C#中GUID生成的问题。 有没有办法在 Java 中生成与 C# 中生成的 UUID 相同的 UUID? 我通过从字符串的MD5散列创建Guid来生成数据库的主键。最后,我希望在Java/Scala中生成与C#脚本中的UUIDs相匹配的UUIDs,这样数据库中使用C#实现进行散列的现有数据就不需要重新散列。 C#

  • 我有五个属性的列表,每个属性有五个不同的值。我想生成它们的笛卡尔乘积,并过滤所有独特的排列。 一些背景: 我需要它们作为我的输入值来解决逻辑难题。在那里我对照他们检查规则以找到正确的解决方案。 也许一个简化的例子就能说清楚。 数据: 数据的笛卡尔乘积: 我想要的是: 我不想要的是: 我不希望同一个值多次出现。位置很重要,因此它应该具有置换性质,对于包含五个元素的列表,它应该具有置换性质。我猜输出大

  • 我想知道是否有一种方法可以基于字符串生成相同的UUID 我尝试使用UUID,它似乎没有提供此功能。

  • 本文向大家介绍什么是UUID?它有什么作用?用js写一个生成UUID的方法相关面试题,主要包含被问及什么是UUID?它有什么作用?用js写一个生成UUID的方法时的应答技巧和注意事项,需要的朋友参考一下 UUID含义是通用唯一识别码 (Universally Unique Identifier), 这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation,

  • 我有一个方法,允许我从创建,方法是获取对象,然后将邻里名称与中的任何键进行比较。如果它还没有在hashmap中,我将它添加为从1开始的计数器,如果它已经存在,我将计数器递增。 有没有更有效的方法可以做到这一点?这是我的代码: