This module is a Go implementation of ai/nanoid.
go get -u github.com/IndexStorm/nanoid-go
import (
"github.com/IndexStorm/nanoid-go"
"log"
)
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
}
This is a restored version of github.com/jaevor/go-nanoid.
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.
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 | ![]() |