如何将UUID字符串转换为UUID类型

Muh*_*tra 9 arrays string uuid parsing go

我有一个字符串 UUID 数组,我想将其更改为 UUID。数据示例:

["69359037-9599-48e7-b8f2-48393c019135" "1d8a7307-b5f8-4686-b9dc-b752430abbd8"]
Run Code Online (Sandbox Code Playgroud)

我该如何更改或解析它?我尝试使用uuid.fromString()方法:

if len(a) == 2 {
    user1 := a[0]
    a[0], _ = uuid.FromString(a[0])
}
Run Code Online (Sandbox Code Playgroud)

但是,这给了我一个错误

FromString 返回从字符串输入解析的 UUID。输入应采用 UnmarshalText 接受的形式。

bla*_*een 21

github.com/gofrs/uuid/v5,使用uuid.FromString

FromString 返回从字符串输入解析的 UUID。输入应采用 UnmarshalText 接受的形式。

如果解析失败,此方法将返回UUID或。error您有两种选择来避免显式错误处理:

  • FromStringOrNil,它仅返回 a UUID,但可能会nil出现错误
  • MustFromString,当is not的错误时会出现恐慌nil。你使用像:
uuid.Must(uuid.FromString("69359037-9599-48e7-b8f2-48393c019135"))
Run Code Online (Sandbox Code Playgroud)

警告:satori/go.uuid较旧的流行 UUID 包现在已无人维护且存在未修复的问题。上面提到的包gofrs/uuid是一个维护的叉子。从包文档中:

我们建议使用此软件包的 v2.0.0+,因为 2.0.0 之前的版本是在我们对原始软件包进行分叉之前创建的,并且存在一些已知的缺陷。


github.com/google/uuid,使用uuid.Parse。其余的模式与 相同satori/uuid


在您的具体情况下,解析 UUID 似乎没有问题,但是您发布的代码似乎不会产生您提到的错误。相反还有另一个问题:

a[0], _ = uuid.FromString(a[0])

您正在尝试重新分配 的值uuid.FromString,该UUID值是 a a[0],大概是 a string

以下代码运行良好(请在Go Play上查看):

var a = []string{"69359037-9599-48e7-b8f2-48393c019135", "1d8a7307-b5f8-4686-b9dc-b752430abbd8"}

func main() {

if len(a) == 2 {
        user1 := a[0]
        s, _ := uuid.FromString(a[0])

        fmt.Println(user1) // prints 69359037-9599-48e7-b8f2-48393c019135
        fmt.Println(s) // prints 69359037-9599-48e7-b8f2-48393c019135
    }
}
Run Code Online (Sandbox Code Playgroud)