如何在Go中生成指定长度的随机字符串?
大家好!我刚开始学习Go,遇到了一个问题:我需要生成固定长度的随机字符串,例如用于创建临时密码或会话ID。我尝试使用`math/rand`包,并从字母集中随机选择字符,但遇到了问题——生成的字符串不够随机,有时甚至重复。以下是我当前的代码:
```go
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println(randString(10))
}
func randString(n int) string {
var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
b := make([]rune, n)
for i := range b {
b[i] = letters[rand.Intn(len(letters))]
}
return string(b)
}
```
问题在于,每次运行程序时,如果不调用`rand.Seed`,我都会得到相同的字符串。我读到在Go 1.20中`math/rand`会自动初始化,但仍然不确定这是否是最佳方法。