https://github.com/bwmarrin/snowflake
https://github.com/sony/sonyflake
用了两个库,生成的 ID 转 int64 纯数字长度都不一样,而且库的配置不同,长度也不一样。
长度是不固定吗?
生成是 18 个数字:
import (
"time"
"github.com/sony/sonyflake"
)
var (
sf = sonyflake.NewSonyflake(sonyflake.Settings{
StartTime: time.Now().Add(-time.Hour),
MachineID: func() (uint16, error) {
return uint16(10), nil
},
})
)
func GetNextSonyflakeId() int64 {
flakeId, _ := sf.NextID()
return int64(flakeId)
}
生成的是 13 个数字:
import (
"github.com/sony/sonyflake"
)
var (
sf = sonyflake.NewSonyflake(sonyflake.Settings{})
)
func GetNextSonyflakeId() int64 {
flakeId, _ := sf.NextID()
return int64(flakeId)
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.