我想生成一個隨機(jī)的 17 位數(shù)字字符串并通過 golang 將其解析為 uint64,這是我的代碼:const msgMaxValue = 100000000000000000s := fmt.Sprintf("%17v", rand.New(rand.NewSource(time.Now().UnixNano())).Int63n(msgMaxValue))log.Info("s:", s)msgId, err := strconv.Atoi(s)錯誤是:語法無效,我發(fā)現(xiàn)隨機(jī)值中有一個空格但不知道為什么,我應(yīng)該如何解決它,謝謝你
1 回答

慕無忌1623718
TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個贊
已通過“crypto/rand”修復(fù)它,下面是代碼:
func CreateRandomNumber(len int) (string, error) {
var numbers = []byte{1, 2, 3, 4, 5, 7, 8, 9}
var container string
length := bytes.NewReader(numbers).Len()
for i := 0; i < len; i++ {
random, err := rand.Int(rand.Reader, big.NewInt(int64(length)))
if err != nil {
log.Error("random error:", err)
return "", err
}
container += fmt.Sprintf("%d", numbers[random.Int64()])
}
return container, nil
}
然后strconv.Atoi得到一個 int 類型號就可以了
- 1 回答
- 0 關(guān)注
- 96 瀏覽
添加回答
舉報(bào)
0/150
提交
取消