分享
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
# Golang 优雅地生成随机字符串
随机字符串都不保证唯一性,服务启动时需要对全局随机种子进行初始化
```
func init() {
rand.Seed(time.Now().UnixNano())
}
```
## 方法一 (常见,但不`优雅`)
```
func GetRandomString(n int) string {
str := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
bytes := []byte(str)
var result []byte
for i := 0; i < n; i++ {
result = append(result, bytes[rand.Intn(len(bytes))])
}
return string(result)
}
```
Benchmark压力测试 `8018 ns/op`

## 方法二(`Docker ContainerID` 生成方法)
```
func GetRandomString2(n int) string {
randBytes := make([]byte, n/2)
rand.Read(randBytes)
return fmt.Sprintf("%x", randBytes)
}
```
Benchmark压力测试 `10595 ns/op`

有疑问加站长微信联系(非本文作者)
第 1 条附言 ·
警告:该文章代码不可用,切勿使用该文章的代码!
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信502316 次点击 ∙ 1 赞
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传