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

How to convert a UUID string into UUID type

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

["69359037-9599-48e7-b8f2-48393c019135" "1d8a7307-b5f8-4686-b9dc-b752430abbd8"]

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

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

但是,这给了我一个错误

FromString returns UUID parsed from string input. Input is expected in a form accepted by UnmarshalText.

github.com/satori/go.uuid, use uuid.FromString.

FromString returns UUID parsed from string input. Input is expected in a form accepted by UnmarshalText.

此方法 returns UUIDerror 以防解析失败。您有两个选项可以避免显式错误处理:

  • FromStringOrNil,其中 returns 只有一个 UUID,但可能 nil 以防出错
  • Must,当 FromString 的错误不是 nil 时 panic。你使用像:
uuid.Must(uuid.FromString("69359037-9599-48e7-b8f2-48393c019135"))

github.com/google/uuid, use uuid.Parse。该模式的其余部分与 satori/uuid.

相同

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

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

您正在尝试将 uuid.FromString 的值重新分配给 a[0]uuid.FromString 可能是 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
    }
}