Grand is a Go random string generator.
go get github.com/ernsheong/grand
-
IMPORTANT. Seed
rand
first to ensure you don't get the same string on every code run (initialize):rand.Seed(time.Now().UTC().UnixNano())
or
rand.Seed(time.Now().Unix())
-
Generate your random string, given a length parameter
n
:grand.GenerateRandomString(32) // returns "qzrWbaoLTVpQoottZyPFfNOoMioXHRuF"
-
Generate random string from other character sets:
gen := grand.NewGenerator(grand.CharSetBase62) gen.GenerateRandomString(20) // returns "q3rWba2LTVpQ4ottZyPv"
From the math/rand
docs:
The default Source is safe for concurrent use by multiple goroutines
grand
uses the default Source, and hence is safe to be called from multiple goroutines, at a slight performance penalty. See https://stackoverflow.com/a/31832326/1161743 for details.
I claim no credit for the generation logic. It's originally from user icza in https://stackoverflow.com/a/31832326/1161743.