README

unique Build Status license codecov

用于生成一个唯一字符串

// 生成由数字和字母组成的唯一字符串,比如 p4k5f81
unique.String().String()

// 生成由数字组成的唯一字符串,比如 15193130121
unique.Number().String()

// 生成由日期与数字组成的唯一字符串,比如 20180222232332-1
unique.Date().String()

// 或者可以自定义一个 Unique 实例
u := unique.New(time.Now().Unix(), 2, 60, "20060102150405-", 10)
u.String() // 生成唯一字符串。

安装

go get github.com/issue9/unique

文档

Go Walker GoDoc

版权

本项目采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

Expand ▾ Collapse ▴

Documentation

Overview

    Package unique 产生一个唯一字符串

    Index

    Constants

    This section is empty.

    Variables

    This section is empty.

    Functions

    This section is empty.

    Types

    type Rands

    type Rands struct {
    	// 固定的前缀内容
    	//
    	// 如果不需要,可以为空
    	Prefix string
    
    	Unique *Unique
    	Rands  *rands.Rands
    }

      Rands 生成唯一的随机字符串

      相对于 Unique,Rands 更有随机性。

      func (*Rands) Bytes

      func (r *Rands) Bytes() []byte

        Bytes 返回 []byte 内容

        func (*Rands) String

        func (r *Rands) String() string

          String 返回字符串内容

          type Unique

          type Unique struct {
          	// contains filtered or unexported fields
          }

            Unique 基于时间戳的唯一字符串,长度不固定。

            NOTE: 算法是基于系统时间的。所以必须得保证时间上正确的,否则可能会造成非唯一的情况。 NOTE: 产生的数据有一定的顺序性,不适合做 token 等需要完全随机的唯一值。

            Unique 由两部分组成: 前缀是由一个相对稳定的字符串,与时间相关联; 后缀是一个自增的数值。

            每次刷新前缀之后,都会重置后缀的计数器,从头开始。 刷新时间和计数器的步长都是一个随机数。

            func Date

            func Date() *Unique

              Date 返回以日期形式表示的 Unique 实例

              格式为:20180222232332-1

              NOTE: 多次调用,返回的是同一个实例。

              func New

              func New(seed, step int64, duration time.Duration, prefixFormat string, base int) *Unique

                New 声明一个新的 Unique。

                seed 随机种子; step 计数器的步长,需大于 0; duration 计数器的重置时间,不能小于 1*time.Second; prefixFormat 格式化 prefix 的方式,若指定,则格式化为时间,否则将时间戳转换为数值; base 数值转换成字符串时,所采用的进制,可以是 [2,36] 之间的值。

                func NewDate

                func NewDate() *Unique

                  NewDate 声明以日期形式表示的 Unique 实例

                  格式为:20180222232332-1

                  与 Date 的不同在于,每次调用 NewDate 都返回新的实例,而 Date 则是返回相同实例。

                  func NewNumber

                  func NewNumber() *Unique

                    NewNumber 声明以数字形式表示的 Unique 实例

                    格式为:15193130121

                    与 Number 的不同在于,每次调用 NewNumber 都返回新的实例,而 Number 则是返回相同实例。

                    func NewString

                    func NewString() *Unique

                      NewString 声明以字符串形式表示的 Unique 实例

                      格式为:p4k5f81

                      与 String 的不同在于,每次调用 NewString 都返回新的实例,而 String 则是返回相同实例。

                      func Number

                      func Number() *Unique

                        Number 返回数字形式表示的 Unique 实例

                        格式为:15193130121

                        NOTE: 多次调用,返回的是同一个实例。

                        func String

                        func String() *Unique

                          String 返回以字符串形式表示的 Unique 实例

                          格式为:p4k5f81

                          NOTE: 多次调用,返回的是同一个实例。

                          func (*Unique) Bytes

                          func (u *Unique) Bytes() []byte

                            Bytes 返回 String() 的 []byte 格式

                            在多次出错之后,可能会触发 panic

                            func (*Unique) String

                            func (u *Unique) String() string

                              String 返回一个唯一的字符串

                              Source Files