Avatar ·

如何在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`会自动初始化,但仍然不确定这是否是最佳方法。