snowflake/README.md
2016-06-01 15:15:24 -05:00

2.2 KiB

flake

GoDoc Go report Build Status Discord Gophers

flake is a Go package that provides a very simple twitter snowflake ID generator along with several functions to convert an ID into different formats.

Getting Started

Installing

This assumes you already have a working Go environment, if not please see this page first.

go get github.com/bwmarrin/flake

Usage Example

Import the package into your project.

import "github.com/bwmarrin/flake"

Construct a new flake Node that can be used to generate snowflake IDs then call the Generate method to get a unique ID. The only argument to the NewNode() method is a Node number. Each node you create must have it's own unique Node number. A node number can be any number from 0 to 1023.

** Example Program: **

package main

import (
        "fmt"
        "github.com/bwmarrin/flake"
)

func main() {

        // Create a new Node with a Node number of 1
        node, err := flake.NewNode(1)
        if err != nil {
                fmt.Println(err)
                return
        }

        // Generate a snowflake ID.
        id, err := node.Generate()
        if err != nil {
                fmt.Println(err)
                return
        }

        // Print out the ID in a few different ways.
        fmt.Printf("Int64  ID: %d\n", id)
        fmt.Printf("String ID: %s\n", id)
        fmt.Printf("Base2  ID: %s\n", id.Base2())
        fmt.Printf("Base64 ID: %s\n", id.Base64())

        // Print out the ID's timestamp
        fmt.Printf("ID Time  : %d\n", id.Time())

        // Print out the ID's node number
        fmt.Printf("ID Node  : %d\n", id.Node())

        // Print out the ID's sequence number
        fmt.Printf("ID Step  : %d\n", id.Step())
}