package random import ( "math/rand" "time" "unsafe" ) type Mode int // 随机数模式 const ( Letter Mode = iota Number LetterNumber LetterHex ) const ( letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" numbers = "0123456789" lettersHex = "0123456789abcdef" letterIdBit = 6 letterIdxMask = 1<= 0; { if remain == 0 { cache, remain = src.Int63(), letterIdxMax } if idx := int(cache & letterIdxMask); idx < len(baseStr) { b[i] = baseStr[idx] i-- } cache >>= letterIdBit remain-- } return *(*string)(unsafe.Pointer(&b)) }