package ulid
import "github.com/oklog/ulid"
Index ¶
- Constants
- Variables
- func MaxTime() uint64
- func Now() uint64
- func Timestamp(t time.Time) uint64
- type ULID
- func MustNew(ms uint64, entropy io.Reader) ULID
- func MustParse(ulid string) ULID
- func New(ms uint64, entropy io.Reader) (id ULID, err error)
- func Parse(ulid string) (id ULID, err error)
- func (id ULID) Entropy() []byte
- func (id ULID) MarshalBinary() ([]byte, error)
- func (id ULID) MarshalBinaryTo(dst []byte) error
- func (id ULID) MarshalText() ([]byte, error)
- func (id ULID) MarshalTextTo(dst []byte) error
- func (id *ULID) SetEntropy(e []byte) error
- func (id *ULID) SetTime(ms uint64) error
- func (id ULID) String() string
- func (id ULID) Time() uint64
- func (id *ULID) UnmarshalBinary(data []byte) error
- func (id *ULID) UnmarshalText(v []byte) error
Examples ¶
Constants ¶
const EncodedSize = 26
EncodedSize is the length of a text encoded ULID.
const Encoding = "0123456789ABCDEFGHJKMNPQRSTVWXYZ"
Encoding is the base 32 encoding alphabet used in ULID strings.
Variables ¶
var ( // ErrDataSize is returned when parsing or unmarshaling ULIDs with the wrong // data size. ErrDataSize = errors.New("ulid: bad data size when unmarshaling") // ErrBufferSize is returned when marshalling ULIDs to a buffer of insufficient // size. ErrBufferSize = errors.New("ulid: bad buffer size when marshaling") // ErrBigTime is returned when constructing an ULID with a time that is larger // than MaxTime. ErrBigTime = errors.New("ulid: time too big") )
Functions ¶
func MaxTime ¶
func MaxTime() uint64
MaxTime returns the maximum Unix time in milliseconds that can be encoded in an ULID.
func Now ¶
func Now() uint64
Now is a convenience function that returns the current UTC time in Unix milliseconds. Equivalent to:
Timestamp(time.Now().UTC())
func Timestamp ¶
Timestamp converts a time.Time to Unix milliseconds.
Because of the way ULID stores time, times from the year 10889 produces undefined results.
Types ¶
type ULID ¶
type ULID [16]byte
An ULID is a 16 byte Universally Unique Lexicographically Sortable Identifier
The components are encoded as 16 octets. Each component is encoded with the MSB first (network byte order). 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 32_bit_uint_time_high | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 16_bit_uint_time_low | 16_bit_uint_random | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 32_bit_uint_random | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 32_bit_uint_random | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Example¶
Code:play
package main import ( "fmt" "math/rand" "time" "github.com/oklog/ulid" ) func main() { t := time.Unix(1000000, 0) entropy := rand.New(rand.NewSource(t.UnixNano())) fmt.Println(ulid.MustNew(ulid.Timestamp(t), entropy)) }
Output:
0000XSNJG0MQJHBF4QX1EFD6Y3
func MustNew ¶
MustNew is a convenience function equivalent to New that panics on failure instead of returning an error.
func MustParse ¶
MustParse is a convenience function equivalent to Parse that panics on failure instead of returning an error.
func New ¶
New returns an ULID with the given Unix milliseconds timestamp and an optional entropy source. Use the Timestamp function to convert a time.Time to Unix milliseconds.
ErrBigTime is returned when passing a timestamp bigger than MaxTime. Reading from the entropy source may also return an error.
func Parse ¶
Parse parses an encoded ULID, returning an error in case of failure.
ErrDataSize is returned if the len(ulid) is different from an encoded ULID's length. Invalid encodings produce undefined ULIDs.
func (ULID) Entropy ¶
Entropy returns the entropy from the ULID.
func (ULID) MarshalBinary ¶
MarshalBinary implements the encoding.BinaryMarshaler interface by returning the ULID as a byte slice.
func (ULID) MarshalBinaryTo ¶
MarshalBinaryTo writes the binary encoding of the ULID to the given buffer. ErrBufferSize is returned when the len(dst) != 16.
func (ULID) MarshalText ¶
MarshalText implements the encoding.TextMarshaler interface by returning the string encoded ULID.
func (ULID) MarshalTextTo ¶
MarshalTextTo writes the ULID as a string to the given buffer. ErrBufferSize is returned when the len(dst) != 26.
func (*ULID) SetEntropy ¶
SetEntropy sets the ULID entropy to the passed byte slice. ErrDataSize is returned if len(e) != 10.
func (*ULID) SetTime ¶
SetTime sets the time component of the ULID to the given Unix time in milliseconds.
func (ULID) String ¶
String returns a lexicographically sortable string encoded ULID (26 characters, non-standard base 32) e.g. 01AN4Z07BY79KA1307SR9X4MV3 Format: tttttttttteeeeeeeeeeeeeeee where t is time and e is entropy
func (ULID) Time ¶
Time returns the Unix time in milliseconds encoded in the ULID.
func (*ULID) UnmarshalBinary ¶
UnmarshalBinary implements the encoding.BinaryUnmarshaler interface by copying the passed data and converting it to an ULID. ErrDataSize is returned if the data length is different from ULID length.
func (*ULID) UnmarshalText ¶
UnmarshalText implements the encoding.TextUnmarshaler interface by parsing the data as string encoded ULID.
ErrDataSize is returned if the len(v) is different from an encoded ULID's length. Invalid encodings produce undefined ULIDs.
Source Files ¶
- Version
- v0.2.0
- Published
- Dec 13, 2016
- Platform
- windows/amd64
- Imports
- 3 packages
- Last checked
- 2 days ago –
Tools for package owners.