github.com/angenalZZZ/gofunc@v0.0.0-20210507121333-48ff1be3917b/data/random/string.go (about)

     1  package random
     2  
     3  import (
     4  	"math/rand"
     5  	"os"
     6  	"time"
     7  )
     8  
     9  var (
    10  	Numbers   = "0123456789"
    11  	LowerCase = "abcdefghijklmnopqrstuvwxyz"
    12  	UpperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    13  	//SpecialChars = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
    14  
    15  	AlphaNumbers      = Numbers + LowerCase + UpperCase
    16  	AlphaNumbersLower = Numbers + LowerCase
    17  	AlphaNumbersUpper = Numbers + UpperCase
    18  )
    19  
    20  // R generator
    21  var R = rand.New(rand.NewSource(time.Now().UnixNano() + int64(os.Getpid())))
    22  
    23  func Number(length int) string           { return String(Numbers, length) }
    24  func AlphaNumber(length int) string      { return String(AlphaNumbers, length) }
    25  func AlphaNumberLower(length int) string { return String(AlphaNumbersLower, length) }
    26  func AlphaNumberUpper(length int) string { return String(AlphaNumbersUpper, length) }
    27  
    28  func NumberBytes(length int) []byte           { return Bytes(Numbers, length) }
    29  func AlphaNumberBytes(length int) []byte      { return Bytes(AlphaNumbers, length) }
    30  func AlphaNumberLowerBytes(length int) []byte { return Bytes(AlphaNumbersLower, length) }
    31  func AlphaNumberUpperBytes(length int) []byte { return Bytes(AlphaNumbersUpper, length) }
    32  
    33  func Bytes(chooseFrom string, length int) []byte {
    34  	l := len(chooseFrom)
    35  	p := make([]byte, length)
    36  	for i := range p {
    37  		p[i] = chooseFrom[R.Intn(l)]
    38  	}
    39  	return p
    40  }
    41  
    42  func String(chooseFrom string, length int) string {
    43  	return string(Bytes(chooseFrom, length))
    44  }