用Go生成指定长度的随机字符串

本文最后更新于2015年11月21日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

搜索关键字:

golang fixed length random string

参考解答:

常规的比较容易想到的方案(从目标字符集中随机选出N个字符组成字符串):

从简单方案开始进行的一次优化历程:

=

=

=

上面的方法用的都是”math/rand”提供(伪)随机数,如果对随机性有高要求的话,可以用”crypto/rand”实现(速度相对来说会慢些):

=

还有一个比较偏门的方法就是用哈希值来表示随机字符串:

参考链接:

=EOF=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/2535.html

《用Go生成指定长度的随机字符串》上有12条评论

  1. 一款 Go 语言开发的 UUID 生成服务
    https://github.com/dreamans/guuid

    Guuid使用了服务器主机名、运行的进程ID、时间戳、随机数、时序元素等一系列元素来保证生成UUID的唯一性。

    UUID 16 bytes, 构成:
    4 bytes 主机名&进程ID
    4 bytes 时间戳
    4 bytes 计数器
    4 bytes 随机数

  2. Go语言中[]byte和string类型相互转换时的性能分析和优化
    https://pengrl.com/p/31544/
    https://syslog.ravelin.com/byte-vs-string-in-go-d645b67ca7ff

    我们在使用Go语言时,经常涉及到[]byte和string两种类型间的转换。本篇文章将讨论转换时的开销,Go编译器在一些特定场景下对转换做的优化,以及在高性能场景下,我们自己如何做相应的优化。

    []byte其实就是byte类型的切片,对应的底层结构体定义如下(在runtime/slice.go文件中)

    string对应的底层结构体定义如下(在runtime/string.go文件中)

发表评论

电子邮件地址不会被公开。 必填项已用*标注