Categorygithub.com/jaevor/go-nanoid
modulepackage
1.4.0
Repository: https://github.com/jaevor/go-nanoid.git
Documentation: pkg.go.dev

# README

go-nanoid

Build Status Build Status GitHub Issues Go Version Go Ref

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 IDsbenchmark screenshot
8, ~21,800,000
21, ~16,400,000
36, ~11,500,000
255, ~2,500,000

Credits & references

License

GNU General Public License v3.0

# 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