Skip to content
Twitter Snowflake implemented in Go
Branch: master
Clone or download
Latest commit 10203e4 Apr 10, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore First draft release Jan 3, 2019
LICENSE Initial commit Jan 3, 2019
Olaf.go Fix 'import cycle' error Jan 4, 2019
Olaf_test.go Fix 'import cycle' error Jan 4, 2019
README.md Update README.md Apr 10, 2019
main.go no longer needed Jan 4, 2019

README.md

Since 10-Apr-2019: Olaf has been merged as a sub-module of btnguyen2k/consu

Olaf

Go Report Card cover.run GoDoc Mentioned in Awesome Go

Golang implementation of Twitter Snowflake.

Getting Started

Install Package

go get github.com/btnguyen2k/olaf

Usage

package main

import (
    "fmt"
    "github.com/btnguyen2k/olaf"
)

func main() {
    // use default epoch
    o := olaf.NewOlaf(1981)

    //use custom epoch (note: epoch is in milliseconds)
    //o := olaf.NewOlafWithEpoch(103, 1546543604123)

    id64 := o.Id64()
    id64Hex := o.Id64Hex()
    id64Ascii := o.Id64Ascii()
    fmt.Println("ID 64-bit (int)   : ", id64, " / Timestamp: ", o.ExtractTime64(id64))
    fmt.Println("ID 64-bit (hex)   : ", id64Hex, " / Timestamp: ", o.ExtractTime64Hex(id64Hex))
    fmt.Println("ID 64-bit (ascii) : ", id64Ascii, " / Timestamp: ", o.ExtractTime64Ascii(id64Ascii))

    id128 := o.Id128()
    id128Hex := o.Id128Hex()
    id128Ascii := o.Id128Ascii()
    fmt.Println("ID 128-bit (int)  : ", id128.String(), " / Timestamp: ", o.ExtractTime128(id128))
    fmt.Println("ID 128-bit (hex)  : ", id128Hex, " / Timestamp: ", o.ExtractTime128Hex(id128Hex))
    fmt.Println("ID 128-bit (ascii): ", id128Ascii, " / Timestamp: ", o.ExtractTime128Ascii(id128Ascii))
}

Document - GoDoc

See GoDoc.

History

Current version: 0.1.0.

2019-01-03 - v0.1.0

First release:

  • Generate 64-bit and 128-bit IDs:
    • Support formats: integer, hex-string (base 16) and ascii-string (base 36).
    • Custom epoch (64-bit ID only).
  • Extract the time metadata from generated ID.
You can’t perform that action at this time.