我正在嘗試在我的程式中將原始位元組字串轉換為 UUID,如下所示:
情況1:
package main
import (
"fmt"
"strconv"
"github.com/google/uuid"
)
func main() {
s := `"\220\254\0021\265\235O~\244\326\216\"\227c\245\002"`
s2, err := strconv.Unquote(s)
if err != nil {
panic(err)
}
by := []byte(s2)
u, err := uuid.FromBytes(by)
if err != nil {
panic(err)
}
fmt.Println(u.String())
}
輸出:
90ac0231-b59d-4f7e-a4d6-8e229763a502
案例2:
package main
import (
"fmt"
"strconv"
"github.com/google/uuid"
)
func main() {
s := `"\235\273\'\021\003\261@\022\226\275o\265\322\002\211\263"`
s2, err := strconv.Unquote(s)
if err != nil {
panic(err)
}
by := []byte(s2)
u, err := uuid.FromBytes(by)
if err != nil {
panic(err)
}
fmt.Println(u.String())
}
輸出:
panic: invalid syntax
goroutine 1 [running]:
main.main()
/tmp/sandbox1756881518/prog.go:14 0x149
Program exited.
上面的程式正在處理字串"\220\254\0021\265\235O~\244\326\216\"\227c\245\002",但無法將字串轉換"\235\273\'\021\003\261@\022\226\275o\265\322\002\211\263"為 uuid。如何將這些字串轉換為 UUID?
uj5u.com熱心網友回復:
如果因為\'. 使用反引號時,所有反斜杠實際上都是反斜杠而不是轉義序列,因此您將原始反斜杠\傳遞'給strconv.Unquote. 它會導致無效的語法。這里有兩種解決方法:
第一的
只需替換這一行:
s := `"\235\273\'\021\003\261@\022\226\275o\265\322\002\211\263"`
有了這個:
s := `"\235\273'\021\003\261@\022\226\275o\265\322\002\211\263"`
所以'沒有\'。但如果您需要以編程方式轉換字串,請使用第二種方法。
第二
進口"strings":
import (
"fmt"
"strconv"
"strings"
"github.com/google/uuid"
)
并替換\'為':
s = strings.ReplaceAll(s, `\'`, `'`)
所以完整的代碼現在看起來像這樣:
package main
import (
"fmt"
"strconv"
"strings"
"github.com/google/uuid"
)
func main() {
s := `"\235\273\'\021\003\261@\022\226\275o\265\322\002\211\263"`
s = strings.ReplaceAll(s, `\'`, `'`)
s2, err := strconv.Unquote(s)
if err != nil {
fmt.Println(err)
}
by := []byte(s2)
u, err := uuid.FromBytes(by)
if err != nil {
fmt.Println(err)
}
fmt.Println(u.String())
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/490493.html
