Fetch the repository succeeded.
package kk_id
import (
"github.com/bwmarrin/snowflake"
"log/slog"
"strconv"
"strings"
"unicode/utf8"
)
var node *snowflake.Node
func init() {
var err error
node, err = snowflake.NewNode(1)
if err != nil {
slog.Error("init snowflake node error", "err", err)
panic(nil)
}
}
func GenerateId() (id snowflake.ID) {
// Generate a snowflake ID.
id = node.Generate()
return id
}
func GenerateUint64Id() (id uint64) {
// Generate a snowflake ID.
id = uint64(node.Generate())
return id
}
func CheckIdValid[T uint64 | string](ids ...T) (isValid bool) {
check := func(id T) (isValid bool) {
var p any = id
switch v := p.(type) {
case uint64:
idStr := strconv.FormatUint(v, 10)
return 19 == len(idStr) && v != 0
case string:
validString := utf8.ValidString(v)
if !validString {
return false
}
// 检查长度是否为19
if utf8.RuneCountInString(v) != 19 {
return false
}
runes := []rune(v)
// 检查是否以 0 开头
if string(runes[0]) == "0" {
return false
}
// 检查是否只包含数字
for _, ch := range runes {
if !strings.Contains("0123456789", string(ch)) {
return false
}
}
return true
default:
return false
}
}
for _, id := range ids {
if !check(id) {
return false
}
}
return true
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。