go生成唯一的随机数
需求在并发下生成不同的随机数,使用match/rand下的不满足需要
使用goole的uuid更好
package main
import (
"crypto/rand"
"fmt"
"math/big"
"strconv"
"sync"
"time"
"encoding/json"
)
func main() {
wg := sync.WaitGroup{}
var lock sync.Mutex
fmt.Println("go start", time.Now())
var arr = []string{}
for i := 0; i < 300; i++ {
wg.Add(1)
go func() {
n, _ := rand.Int(rand.Reader, big.NewInt(100000000))
lock.Lock()
arr = append(arr, strconv.FormatInt(n.Int64()+time.Now().UnixNano(), 10))
lock.Unlock()
wg.Done()
}()
}
wg.Wait()
fmt.Println(len(arr))
str, err := json.Marshal(arr)
if err != nil {
fmt.Println("错误:", err)
} else {
fmt.Println(string(str))
}
//fmt.Println(arr)
}

浙公网安备 33010602011771号