golang雪花id生成

1,090 阅读1分钟

golang雪花id生成

前几天看到群里有一个兄弟说,他的雪花id使用for循环生成的过程偶尔会出现id重读的情况。 那么今天我们来看看他到底会不会重读。直接上操作步骤。

老规矩直接拉三方库

三方库地址:go get -u github.com/sony/sonyflake

直接上主函数代码。

    package main  
  
import (  
"fmt"  
"github.com/sony/sonyflake"  
"time"  
)  
  
var flake *sonyflake.Sonyflake  
  
func init() {  
// 创建一个新的 sonyflake 实例  
flake = sonyflake.NewSonyflake(sonyflake.Settings{})  
}  
func main() {  
  
// 生成 100 个不重复的 ID  
for i := 0; i < 100; i++ {  
go func() {  
id, err := flake.NextID()  
if err != nil {  
fmt.Printf("Failed to generate ID: %s\n", err)  
} else {  
fmt.Printf("Generated ID: %d\n", id)  
}  
}()  
}  
time.Sleep(10 * time.Second)  
}

我们上面的代码是并发生成100个雪花Id,实际也并没有出现重复的id

image.png