登录
首页 >  Golang >  Go问答

在Go中使用命名空间/字符串生成uuid

来源:stackoverflow

时间:2024-02-10 17:54:24 360浏览 收藏

一分耕耘,一分收获!既然都打开这篇《在Go中使用命名空间/字符串生成uuid》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

我想根据字符串值生成 uuid,并且还能够检查给定的 uuid(如果它是使用该字符串生成的)。我将使用它来标记我与系统实例名称一起使用的 uuid。有没有办法在 Go 中实现这一点?


正确答案


uuid 有不同类型(请参阅 Wikipedia,尽管列表不完整)。版本5是根据用户数据生成的版本。

package main

import (
    "fmt"

    "github.com/google/uuid"
)

func main() {
    fmt.Println(v5UUID("custom data"))
    fmt.Println(v5UUID("custom data"))
    fmt.Println(v5UUID("other data"))
}

func v5UUID(data string) uuid.UUID {
    return uuid.NewSHA1(uuid.NameSpaceURL, []byte(data))
}

Playground

uuid 版本 5 基于命名空间 uuid。在上面的示例中,使用了 uuid.namespaceurl。它是一个众所周知的命名空间 uuid。您可以将其替换为您自己的静态 uuid 或 uuid.nil

鉴于验证时有相同的数据,可以再次生成相同的 uuid 并进行比较。

警告:由于相同的数据将导致相同的 uuid,因此数据必须是唯一的,否则 uuid 将不唯一。不同的命名空间 uuid 可以用于给定唯一性的不同域。

到这里,我们也就讲完了《在Go中使用命名空间/字符串生成uuid》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>