zoukankan      html  css  js  c++  java
  • go多种uuid生成方式

    package main
    
    import (
    	"fmt"
    	"github.com/chilts/sid"
    	"github.com/kjk/betterguid"
    	"github.com/oklog/ulid"
    	"github.com/rs/xid"
    	"github.com/satori/go.uuid"
    	"github.com/segmentio/ksuid"
    	"github.com/sony/sonyflake"
    	"log"
    	"math/rand"
    	"time"
    )
    
    func genXid() {
    	id := xid.New()
    	fmt.Printf("github.com/rs/xid:           %s
    ", id.String())
    }
    
    func genKsuid() {
    	id := ksuid.New()
    	fmt.Printf("github.com/segmentio/ksuid:  %s
    ", id.String())
    }
    
    func genBetterGUID() {
    	id := betterguid.New()
    	fmt.Printf("github.com/kjk/betterguid:   %s
    ", id)
    }
    
    func genUlid() {
    	t := time.Now().UTC()
    	entropy := rand.New(rand.NewSource(t.UnixNano()))
    	id := ulid.MustNew(ulid.Timestamp(t), entropy)
    	fmt.Printf("github.com/oklog/ulid:       %s
    ", id.String())
    }
    
    func genSonyflake() {
    	flake := sonyflake.NewSonyflake(sonyflake.Settings{})
    	id, err := flake.NextID()
    	if err != nil {
    		log.Fatalf("flake.NextID() failed with %s
    ", err)
    	}
    	fmt.Printf("github.com/sony/sonyflake:   %x
    ", id)
    }
    
    func genSid() {
    	id := sid.Id()
    	fmt.Printf("github.com/chilts/sid:       %s
    ", id)
    }
    
    func genUUIDv4() {
    	id,err := uuid.NewV4()
    	if err != nil {
    		fmt.Printf("get uuid error [%s]",err)
    	}
    	fmt.Printf("github.com/satori/go.uuid:   %s
    ", id)
    }
    
    func main() {
    	genXid()
    	genKsuid()
    	genBetterGUID()
    	genUlid()
    	genSonyflake()
    	genSid()
    	genUUIDv4()
    }
    
  • 相关阅读:
    ubuntu 安装(install) pwntcha[一个做"验证码识别"的开源程序]
    MySQL 二进制日志过滤
    MySQL 分区表各个分区的行数
    MySQL 表分区A
    MySQL show binglog event in 'log_name'
    MySQL、You are using safe update mode
    SQL 设计心得、逗号分隔列表
    MYSQL @、@@、@x
    SQL Server
    建设供内网访问的网站
  • 原文地址:https://www.cnblogs.com/dwxt/p/12889653.html
Copyright © 2011-2022 走看看