go - 尝试生成唯一的int64时生成负数的代码

标签 go unix-timestamp

我正在尝试使用下面的Go代码创建唯一的int64

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)
    }

上面的代码也生成负数。我如何解决它?

最佳答案

检查是否为负使其为正:

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)
}

关于go - 尝试生成唯一的int64时生成负数的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60601887/

相关文章:

video - 视频第一帧

docker - 无法在 Raspberry Pi 上运行 elasticsearch 镜像

go - 我怎么知道哪个 Peer 在 Hyperledger Fabric Go 中进行了交易?

go - 如何使用 WaitGroup 处理工作池中的错误?

rest - Golang HTTP REST 模拟

linux - 根据创建时间删除文件

php - 为什么 MySQL 的 UNIX_TIMESTAMP 在 MySQL 5.5 中返回奇怪的值,如 '%qd'?

c++ - 如何在 C++ 中将 Windows DATE 转换为 Unix 时间

mysql - 从 MYSQL 中删除早于 X 天的数据,Unix 时间以毫秒为单位

linux - 如何将时间戳从十六进制格式转换为 EPOCH 时间戳?