Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 尝试生成唯一int64时生成负数的代码_Go_Unix Timestamp - Fatal编程技术网

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

Go 尝试生成唯一int64时生成负数的代码,go,unix-timestamp,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 :=

我正在尝试使用下面的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检查是否为负值使其为正值:

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)
}
unixtimestamp:=time.Now().UnixNano()

node:=AppConfig.NodeID最简单的修复方法是将
int64
值转换为
uint64
。正确的解决方案?我们需要更多地了解您的算法和算法中涉及的值。@icza谢谢,我正在尝试为db table unique bigint列生成unique int64,以使负数与-1相乘在几乎所有情况下都有效。@Volker如果负数是uniq而不是与任何数字相乘,它能保证唯一性吗!=0不会使它们变为非nuique,尤其是如果乘以-1时,因为这不会(在几乎所有情况下)溢出。我猜你生成“uniq”数字的方法有很大的缺陷,而它们是负数是迄今为止你最小的问题。