29 lines
610 B
Go
29 lines
610 B
Go
|
package random
|
||
|
|
||
|
import (
|
||
|
"math/rand"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
Uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||
|
Lowercase = "abcdefghijklmnopqrstuvwxyz"
|
||
|
Alphabetic = Uppercase + Lowercase
|
||
|
Numeric = "0123456789"
|
||
|
Alphanumeric = Alphabetic + Numeric
|
||
|
Symbols = "`" + `~!@#$%^&*()-_+={}[]|\;:"<>,./?`
|
||
|
Hex = Numeric + "abcdef"
|
||
|
)
|
||
|
|
||
|
func String(length uint8, charsets ...string) string {
|
||
|
charset := strings.Join(charsets, "")
|
||
|
if charset == "" {
|
||
|
charset = Alphanumeric
|
||
|
}
|
||
|
b := make([]byte, length)
|
||
|
for i := range b {
|
||
|
b[i] = charset[rand.Int63()%int64(len(charset))]
|
||
|
}
|
||
|
return string(b)
|
||
|
}
|