gohelpers/pkg/util/random.go
2021-09-17 11:16:38 +08:00

52 lines
952 B
Go

package util
import (
"fmt"
"math/rand"
"strings"
"time"
gonanoid "github.com/matoous/go-nanoid"
)
const alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
func init() {
rand.Seed(time.Now().UnixNano())
}
func RandomString(n int) string {
var sb strings.Builder
k := len(alphabet)
for i := 0; i < n; i++ {
c := alphabet[rand.Intn(k)]
sb.WriteByte(c)
}
return sb.String()
}
func RandomInt(n int) string {
var letters = []byte("0123456789")
result := make([]byte, n)
for i := range result {
result[i] = letters[rand.Intn(len(letters))]
}
return string(result)
}
func RandomLevel() string {
levels := []string{"DEBUG", "INFO", "ERROR", "WARNING", "FAIL"}
n := len(levels)
return levels[rand.Intn(n)]
}
func GenerateFilename() (string, error) {
filename, err := gonanoid.Nanoid()
if err != nil {
return "", fmt.Errorf("could not generate avatar filename: %v", err)
}
return filename, nil
}