go-nanoid
This module is a Go implementation of ai/nanoid.
Features of the nanoid spec are:
- Uses a bigger alphabet than UUID, so a similar number of random bits are packed in just 21 chars instead of UUID's 36 chars
- Much, much faster than UUID-V4
Install
go get github.com/jaevor/go-nanoid
Example
import (
"log"
"github.com/jaevor/go-nanoid"
)
func main() {
// The canonic NanoID is nanoid.Standard(21).
canonicID, err := nanoid.Standard(21)
if err != nil {
panic(err)
}
id1 := canonicID()
log.Printf("ID 1: %s", id1) // eLySUP3NTA48paA9mLK3V
// Makes sense to use CustomASCII since 0-9 is ASCII.
decenaryID, err := nanoid.CustomASCII("0123456789", 12)
if err != nil {
panic(err)
}
id2 := decenaryID()
log.Printf("ID 2: %s", id2) // 817411560404
}
Security
Benchmarks
All benchmarks & tests are in nanoid_test.go.
These are all benchmarks of nanoid.Standard(#)
# of characters & # of IDs | benchmark screenshot |
---|---|
8, ~21,800,000 | |
21, ~16,400,000 | |
36, ~11,500,000 | |
255, ~2,500,000 |