Код, генерирующий отрицательные числа при попытке создать уникальный int64 - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь создать уникальный int64, используя приведенный ниже Go код

unixtimestamp := time.Now().UnixNano()
    node := AppConfig.NodeID << 44
    timestamp := unixtimestamp << 12
    var sequenceID int64
    for sequenceID = 1; sequenceID <= count; sequenceID++ {
        id := node | timestamp | sequenceID
        idList = append(idList, id)
    }

Приведенный выше код также генерирует отрицательные числа. Как мне это исправить?

1 Ответ

0 голосов
/ 09 марта 2020

Проверьте, не отрицательный ли он, положительный:

unixtimestamp := time.Now().UnixNano()
node := AppConfig.NodeID << 44
timestamp := unixtimestamp << 12
var sequenceID int64
for sequenceID = 1; sequenceID <= count; sequenceID++ {
    id := node | timestamp | sequenceID
    if id < 0 {
        id = id *  -1
    }
    idList = append(idList, id)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...