作者 yangfu

radom string

1 package common 1 package common
2 2
3 import ( 3 import (
  4 + "bytes"
4 "fmt" 5 "fmt"
5 "encoding/json" 6 "encoding/json"
  7 + "math/rand"
6 ) 8 )
7 9
8 // Must panics if err is not nil. 10 // Must panics if err is not nil.
@@ -33,4 +35,17 @@ func AssertJson(object interface{})string{ @@ -33,4 +35,17 @@ func AssertJson(object interface{})string{
33 return "" 35 return ""
34 } 36 }
35 return string(json) 37 return string(json)
  38 +}
  39 +
  40 +var randomChars = "ABCDEFGHJKMNPQRSTWXYZabcdefhjkmnprstwxyz2345678" /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
  41 +func RandomString(l int)string{
  42 + if l<=0{
  43 + return ""
  44 + }
  45 + lenChars :=len(randomChars) -1
  46 + rsp :=bytes.NewBuffer(nil)
  47 + for i:=0;i<l;i++{
  48 + rsp.WriteByte(randomChars[rand.Intn(lenChars)])
  49 + }
  50 + return rsp.String()
36 } 51 }
  1 +package common
  2 +
  3 +import (
  4 + "testing"
  5 +)
  6 +
  7 +func Test_RandomString(t *testing.T){
  8 + input :=[]int{6,10,20,16,32}
  9 + for i:=range input{
  10 + l :=input[i]
  11 + out := RandomString(l)
  12 + if len(out)!=l{
  13 + t.Fatal("length not equal want :",l," out:",out)
  14 + }
  15 + }
  16 +}
  17 +
  18 +func Benchmark_RandomString(b *testing.B) {
  19 + input :=[]int{10,20,16,32}
  20 + l :=0
  21 + out :=""
  22 + for i:=0;i<b.N;i++{
  23 + l=i%4
  24 + l=input[l]
  25 + out = RandomString(l)
  26 + if len(out)!=l{
  27 + b.Fatal("length not equal want :",l," out:",out)
  28 + }
  29 + }
  30 +}