blob: b76bd9b30f54c4b65c5b5fe6decd059b19e8f64d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
package random
import (
"math/rand"
"time"
)
type (
Random struct {
charset Charset
}
Charset string
)
const (
Alphanumeric Charset = Alphabetic + Numeric
Alphabetic Charset = "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Numeric Charset = "0123456789"
Hex Charset = Numeric + "abcdef"
)
var (
global = New()
)
func New() *Random {
rand.Seed(time.Now().UnixNano())
return &Random{
charset: Alphanumeric,
}
}
func (r *Random) SetCharset(c Charset) {
r.charset = c
}
func (r *Random) String(length uint8) string {
b := make([]byte, length)
for i := range b {
b[i] = r.charset[rand.Int63()%int64(len(r.charset))]
}
return string(b)
}
func SetCharset(c Charset) {
global.SetCharset(c)
}
func String(length uint8) string {
return global.String(length)
}
|