idgener

package module
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 5, 2023 License: MIT Imports: 9 Imported by: 6

README

idgener

用于生成随机不(难以)重复id的函数.

目前支持3种算法

  • uuid4
  • sonyflake
  • snowflake

用法

  • 使用默认生成器--调用func Next(idgen_name string) (string, error)

  • 创建生成器--调用func IDGenNameToIDGen(idgen_name string) (IDGenInterface, error)

Documentation

Overview

用于生成jwt的id

Index

Constants

This section is empty.

Variables

View Source
var DefaultSnowflakeOpt = SnowflakeOpts{
	NodeID: int64(machineid.MachineID),
}
View Source
var DefaultSonyflakeOpt = sonyflake.Settings{
	StartTime: time.Date(2022, 2, 2, 0, 0, 0, 0, time.UTC),
	MachineID: func() (uint16, error) {
		return machineid.MachineID, nil
	},
}

Functions

func Next

func Next(idgen_name IDGENAlgorithm) (string, error)

Next 使用默认id生成器构造id @params idgen_name string idgen的名字,目前支持uuid4,sonyflake,snowflake

func WithCheckMachineID

func WithCheckMachineID(checkfunc func(uint16) bool) optparams.Option[sonyflake.Settings]

WithCheckMachineID 设置校验机器id的函数

func WithMachineID

func WithMachineID(machineid uint16) optparams.Option[sonyflake.Settings]

WithMachineID 设置机器id

func WithNodeID

func WithNodeID(nodeid int64) optparams.Option[SnowflakeOpts]

WithNodeID 设置节点id

func WithStartTime

func WithStartTime(starttime time.Time) optparams.Option[sonyflake.Settings]

WithStartTime 设置起始时间

Types

type IDGENAlgorithm added in v0.0.2

type IDGENAlgorithm uint8
const (
	//AckModeAckWhenGet 获取到后确认
	IDGEN_UUIDV4 IDGENAlgorithm = iota
	IDGEN_SNOYFLAKE
	IDGEN_SNOWFLAKE
	IDGEN_ULID
)

type IDGenInterface

type IDGenInterface interface {
	Next() (string, error)
	String() string
}

IDGenInterface 满足该接口的就认为是IDGen

func IDGenNameToIDGen

func IDGenNameToIDGen(idgen_name IDGENAlgorithm) (IDGenInterface, error)

IDGenNameToIDGen 通过名字获得一个IDGen实例 @params idgen_name string idgen的名字,目前支持uuid4,sonyflake,snowflake

type SnowflakeGen

type SnowflakeGen struct {
	Opt SnowflakeOpts
	// contains filtered or unexported fields
}
var DefaultSnowflake *SnowflakeGen

DefaultSnowflake 默认snowflake生成器,nodeid为本机MachineID

func NewSnowflakeGen

func NewSnowflakeGen(opts ...optparams.Option[SnowflakeOpts]) (*SnowflakeGen, error)

func (*SnowflakeGen) Next

func (g *SnowflakeGen) Next() (string, error)

Next 随机生成key

func (*SnowflakeGen) String

func (g *SnowflakeGen) String() string

type SnowflakeOpts

type SnowflakeOpts struct {
	NodeID int64
}

type SonyflakeGen

type SonyflakeGen struct {
	Opt sonyflake.Settings
	// contains filtered or unexported fields
}
var DefaultSonyflake *SonyflakeGen

DefaultSonyflake 默认的sonyflake生成器,使用本机MachineID作为MachineID

func NewSonyflakeGen

func NewSonyflakeGen(opts ...optparams.Option[sonyflake.Settings]) (*SonyflakeGen, error)

func (*SonyflakeGen) Next

func (g *SonyflakeGen) Next() (string, error)

Next 随机生成key

func (*SonyflakeGen) String

func (g *SonyflakeGen) String() string

type ULIDGen added in v0.0.4

type ULIDGen struct{}
var DefaultULID *ULIDGen

DefaultULID 默认的ulid生成器

func NewULIDGen added in v0.0.4

func NewULIDGen() (*ULIDGen, error)

func (*ULIDGen) Next added in v0.0.4

func (g *ULIDGen) Next() (string, error)

func (*ULIDGen) String added in v0.0.4

func (g *ULIDGen) String() string

type UUID4Gen

type UUID4Gen struct{}
var DefaultUUID4 *UUID4Gen

DefaultUUID4 默认uuid4id生成器

func NewUUID4Gen

func NewUUID4Gen() (*UUID4Gen, error)

func (*UUID4Gen) Next

func (g *UUID4Gen) Next() (string, error)

func (*UUID4Gen) String

func (g *UUID4Gen) String() string

Directories

Path Synopsis
用于获取MachineID,MachineID指当前机器的id,使用机器第一张网卡的可用ip地址构造 提供全局变量 `MachineIDStr string`用于保存MachineID的字符串形式 `MachineID uint16`用于保存MachineID原始的整型数形式 这两个全局变量都会在模块初始化时计算获得,不需要额外调用函数获得
用于获取MachineID,MachineID指当前机器的id,使用机器第一张网卡的可用ip地址构造 提供全局变量 `MachineIDStr string`用于保存MachineID的字符串形式 `MachineID uint16`用于保存MachineID原始的整型数形式 这两个全局变量都会在模块初始化时计算获得,不需要额外调用函数获得

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL