Golang 固定位数 随机不重复字串 生成库


//【固定位数】【随机不重复数字】生成库 github.com/goodlucktou/random
package random
import (
    "crypto/rand"
    "fmt"
)
var strstr = []byte("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
// GetUID ...
func GetUID() string {
    data := make([]byte, 16)
    _, err := rand.Read(data)
    if err != nil {
        panic(err)
    }
    uuid := fmt.Sprintf("%X-%X-%X-%X-%X", data[0:4], data[4:6], data[6:8], data[8:10], data[10:])
    return uuid
}
// GetString ...【固定位数】【随机不重复数字】生成库
func GetString(size int) string {
    data := make([]byte, size)
    out := make([]byte, size)
    buffer := len(strstr)
    _, err := rand.Read(data)
    if err != nil {
        panic(err)
    }
    for id, key := range data {
        x := byte(int(key) % buffer)
        out[id] = strstr[x]
    }
    return string(out)
}

//主函数
package main
import (
    "fmt"
   random "github.com/goodlucktou/random"
)

func main() {

  for i:=0 ;i <5;i++ {
      fmt.Printf("%s \n", random.GetString(12))
    
    }
 //var str = random.GetUID()
 //fmt.Printf("ggg %s \n", str)

}