# README
go-nanoid
This module is a Go implementation of ai/nanoid.
go get github.com/jaevor/go-nanoid
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
}
Note
This module's functions use an internal buffered slice of random bytes, and thus also a mutex. This slight overhead of memory allows it to be very efficient, but may not be ideal if you are only generating an ID every now and then.
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 | ![]() |
Credits & references
License
# Functions
Returns a mutexed buffereed NanoID generator that uses an alphabet of ASCII characters 40-126 inclusive.
Returns a standard NanoID generator with canonic length (21)
i.e., nanoid.Standard(21)
*/.
Deprecated; use nanoid.CustomUnicode.
Returns a Nano ID generator which uses a custom ASCII alphabet.
Returns a mutexed buffered NanoID generator which uses a custom alphabet that can contain non-ASCII (unicode).
MustCustomASCII is a wrapper around CustomASCII but panics if any initialization error occurs.
Returns a mutexed buffered NanoID generator.
# Variables
No description provided by the author