123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package random
- import (
- "math/rand"
- "strings"
- "time"
- )
- type (
- Random struct {
- }
- )
- // Charsets
- const (
- Uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- Lowercase = "abcdefghijklmnopqrstuvwxyz"
- Alphabetic = Uppercase + Lowercase
- Numeric = "0123456789"
- Alphanumeric = Alphabetic + Numeric
- Symbols = "`" + `~!@#$%^&*()-_+={}[]|\;:"<>,./?`
- Hex = Numeric + "abcdef"
- )
- var (
- global = New()
- )
- func New() *Random {
- rand.Seed(time.Now().UnixNano())
- return new(Random)
- }
- func (r *Random) 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)
- }
- func String(length uint8, charsets ...string) string {
- return global.String(length, charsets...)
- }
|