go - 尝试生成唯一 int64 时生成负数的代码
问题描述
我正在尝试使用以下 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)
}
推荐阅读
- php - 如何在 WordPress 中从数组中获取数据
- swift - 不通知代币的领域交易
- r - Shiny:使用带有 actionLinks 和 shinyJS 的动态 renderUI
- azure - 逻辑应用与 Azure 租户中的 SQL 数据库通信是否需要集成服务环境?
- javascript - 为什么动态焦点(使用 JavaScript)在 iPad iOS 13+ 中不起作用?
- javascript - 如何仅使用管理员登录。角
- python - 使用 Python 删除文件中的数据
- c# - 搜索开始菜单时应用程序图标不正确
- angular - 在 ngFor 中使用 mat-accordion 和 mat-expansion-panel
- sequelize.js - 如何在续集上过滤关联表或父级