生成随机字符串golang

初学golang

想写个一个用多个协程去随机生成字符串,然后插入数据库的demo
网上找了点包,要么在协程多的时候,容易生成连续重复的随机字符串 原因可能是在 随机的包内去用时间戳去做种子,导致过快的时候,生成的随机数一样
还有的不能去自定义随机字符串的范围 比如我想生成只包含大写字母加数字的 随机字符串 没找到好用的包
有php功底嘛,照着原来php的demo去写一个go的,问题应该不大,抱着这样的想法,就去撸了一个,当练手

生成随机字符串demo

package main
import (
    "fmt"
    "math/rand"
    "time"
)
func main(){
    rand.Seed(time.Now().UnixNano())
    fmt.Println(randstr(8))
}
func randstr(lens int)string{
    var str string
    strpol := "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    for i:=0;i<lens;i++ {
        num := rand.Intn(len(strpol)-1)
        str = str + strpol[num:num+1]
    }
    return str
}

性能肯定不是最佳,毕竟go初学
应该还可以将 初始的随机范围字符串 转成数组 然后再去循环 随机取值拼接 应该要比直接对字符串进行切片,性能要好

Last modification:December 4th, 2019 at 02:33 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment

简爱博客