Since 10-Apr-2019: Olaf has been merged as a sub-module of btnguyen2k/consu
Golang implementation of Twitter Snowflake.
go get github.com/btnguyen2k/olaf
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))
}See GoDoc.
Current version: 0.1.0.
First release:
- Generate 64-bit and 128-bit IDs:
- Support formats: 
integer,hex-string(base 16) andascii-string(base 36). - Custom epoch (64-bit ID only).
 
 - Support formats: 
 - Extract the time metadata from generated ID.