From 8e94a6681ed3538eb1b260b34e2c1b782cbff02e Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Fri, 1 Dec 2023 10:38:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20sole=20=E5=8C=85=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=87=AA=E5=A2=9E=E5=BE=AA=E7=8E=AF=E7=9A=84?= =?UTF-8?q?=20id=EF=BC=8C=E5=90=8C=E6=97=B6=E6=94=AF=E6=8C=81=E8=87=AA?= =?UTF-8?q?=E5=A2=9E=E5=BE=AA=E7=8E=AF=E7=9A=84=20string=20=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E7=9A=84=E6=95=B0=E5=AD=97=20id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/sole/unique.go | 45 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 utils/sole/unique.go diff --git a/utils/sole/unique.go b/utils/sole/unique.go new file mode 100644 index 0000000..1c90ce1 --- /dev/null +++ b/utils/sole/unique.go @@ -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) +}