feat: sole 包支持获取自增循环的 id,同时支持自增循环的 string 类型的数字 id

This commit is contained in:
kercylan98 2023-12-01 10:38:33 +08:00
parent 6127fb63e1
commit 8e94a6681e
1 changed files with 45 additions and 0 deletions

45
utils/sole/unique.go Normal file
View File

@ -0,0 +1,45 @@
package sole
import (
"strconv"
"sync/atomic"
)
var autoIncrementUint32 uint32 = 0
var autoIncrementUint64 uint64 = 0
var autoIncrementInt32 int32 = 0
var autoIncrementInt64 int64 = 0
var autoIncrementInt uint64 = 0
var autoIncrementString uint64 = 0
// AutoIncrementUint32 获取一个自增的 uint32 值
func AutoIncrementUint32() uint32 {
return atomic.AddUint32(&autoIncrementUint32, 1) - 1
}
// AutoIncrementUint64 获取一个自增的 uint64 值
func AutoIncrementUint64() uint64 {
return atomic.AddUint64(&autoIncrementUint64, 1) - 1
}
// AutoIncrementInt32 获取一个自增的 int32 值
func AutoIncrementInt32() int32 {
return atomic.AddInt32(&autoIncrementInt32, 1) - 1
}
// AutoIncrementInt64 获取一个自增的 int64 值
func AutoIncrementInt64() int64 {
return atomic.AddInt64(&autoIncrementInt64, 1) - 1
}
// AutoIncrementInt 获取一个自增的 int 值
func AutoIncrementInt() int {
num := atomic.AddUint64(&autoIncrementInt, 1)
result := num % (1 << (strconv.IntSize - 1))
return int(result)
}
// AutoIncrementString 获取一个自增的字符串
func AutoIncrementString() string {
return strconv.FormatUint(atomic.AddUint64(&autoIncrementString, 1)-1, 10)
}