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)