相关疑难解决方法(0)

如何在Go中生成固定长度的随机字符串?

我想在Go中只有一个随机字符串(大写或小写),没有数字.什么是最快最简单的方法?

string random go

270
推荐指数
9
解决办法
15万
查看次数

有没有一种方法可以使用go语言生成UUID

我的代码看起来像这样:

u := make([]byte, 16)
_, err := rand.Read(u)
if err != nil {
    return
}

u[8] = (u[8] | 0x80) & 0xBF // what does this do?
u[6] = (u[6] | 0x40) & 0x4F // what does this do?

return hex.EncodeToString(u)
Run Code Online (Sandbox Code Playgroud)

它返回一个长度为32的字符串,但我不认为它是一个有效的UUID.如果它是一个真正的UUID,为什么它是一个UUID,什么是修改的值的代码的目的u[8]u[6].

有没有更好的方法来生成UUID?

uuid go

96
推荐指数
11
解决办法
10万
查看次数

可以使用Unicode映射多少个字符?

我要求解释Unicode中所有可能有效组合的计数.我知道char可以编码为1,2,3或4个字节.我也不明白为什么延续字节有限制,即使该字符的起始字节清除它应该有多长.

unicode utf-8 utf

74
推荐指数
3
解决办法
6万
查看次数

将Go中的UUID输出为短字符串

是否有内置方式,或合理的标准包,允许您将标准UUID转换为短链接,以实现更短的URL?

即利用更大范围的字符,例如[A-Za-z0-9]输出更短的字符串.

我知道我们可以使用base64对字节进行编码,如下所示,但是我正在创建一个看起来像"单词"的字符串,即no +/:

id = base64.StdEncoding.EncodeToString(myUuid.Bytes())
Run Code Online (Sandbox Code Playgroud)

string uuid encoding go

8
推荐指数
2
解决办法
9280
查看次数

如何使用标准库在Go中生成*唯一*随机数

问题:如何在Go中生成唯一的随机数流?

即,我想保证a使用math/rand和/或标准Go库实用程序的数组中没有重复。

func RandomNumberGenerator() *rand.Rand {
    s1 := rand.NewSource(time.Now().UnixNano())
    r1 := rand.New(s1)          
    return r1
}
rng := RandomNumberGenerator()    
N := 10000
for i := 0; i < N; i++ {
    a[i] = rng.Int()
}
Run Code Online (Sandbox Code Playgroud)

有关如何在Go中生成一系列随机数的问题和解决方案,例如,在此处

但是现在我想生成一系列随机数,这些随机数不会与以前的值重复。Go中是否有标准/推荐的方法?

我的猜测是(1)使用置换或(2)跟踪先前生成的数字并重新生成一个值(如果该值之前已生成)。

但是,如果我只想要几个数字,解决方案(1)听起来像是一个过大的杀伤力;如果由于碰撞而最终生成一连串的随机数,则解决方案(2)听起来很耗时,而且我猜想它也非常消耗内存。


用例:用没有重复的10K,100K,1M伪随机数对Go程序进行基准测试。

random go

5
推荐指数
1
解决办法
5824
查看次数

标签 统计

go ×4

random ×2

string ×2

uuid ×2

encoding ×1

unicode ×1

utf ×1

utf-8 ×1