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
- Bugs
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 miliseconds. Equivalent to:
Timestamp(time.Now().UTC())
func Timestamp ¶
Timestamp converts a time.Time to Unix milliseconds.
BUG(tsenart): Because of the way time.Time is internally represented, times from the year 2262 on have 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 a string encoded ULID, returning an error in case of failure.
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.
Bugs ¶
☞ Because of the way time.Time is internally represented, times from the year 2262 on have undefined results.
Source Files ¶
- Version
- v0.1.0
- Published
- Dec 6, 2016
- Platform
- windows/amd64
- Imports
- 3 packages
- Last checked
- 2 days ago –
Tools for package owners.