如何在golang中切掉uuid?
为了制作半随机的子弹,我想使用uuid的前8个字符。所以我有
import ( fmt
"github.com/satori/go.uuid"
)
u1 := uuid.NewV4()
fmt.Println("u1 :", u1)
runes := []rune(u1)
slug := string(runes[0:7])
但是在编译时我得到这个错误:
无法将u1(类型为uuid.UUID)转换为类型[] rune
我该如何解决?
回答:
在该程序包中(我只是看过源代码),UUID是的别名[16]byte
,因此您无法将其协调为符文数组,而不是您想要的。
试试这个:
s := hex.EncodeToString(u1.Bytes()[:4])
这将为您提供8个十六进制数字。但是,这仍然是一种回旋处事方式。v4
UUID除某些位外都是随机的,因此,如果您不使用整个UUID,则只需生成4个随机字节即可。使用中的Read()
函数math/rand
(必须为种子)或crypto/rand
(UUID库使用的函数)。
b := make([]byte, 4)rand.Read(b) // Doesn’t actually fail
s := hex.EncodeToString(b)
以上是 如何在golang中切掉uuid? 的全部内容, 来源链接: utcz.com/qa/399892.html