golang 常用方法或模块

雪花算法生成ID

工具库 github.com/bwmarrin/snowflake

package snowflake

import (
	"github.com/bwmarrin/snowflake"
	"time"
)

var node *snowflake.Node

// Init 初始化节点,能够使用69年
// startTime 起始时间,起始时间可以设置为项目开始时间,如 2025-12-01
// machineID 机器id
func Init(startTime string, machineID int64) (err error) {
	// 设置起始时间
	var st time.Time
	st, err = time.Parse(time.DateOnly, startTime)
	if err != nil {
		return
	}
	snowflake.Epoch = st.UnixNano() / 1000000
	// 创建节点
	node, err = snowflake.NewNode(machineID)
	return
}

// GenId 生成唯一id
func GenId() int64 {
	return node.Generate().Int64()
}

posted @ 2025-12-02 11:28  一个小笨蛋  阅读(6)  评论(0)    收藏  举报