func (f StringFunc) Numberal(n int) (string, error) {
	return f(n, NUMERALS)
}
Numberal generate random numberal string
package rand
import (
	"crypto/rand"
	"math/big"
	"github.com/cosiner/gohper/errors"
)
const (
	ALPHABET     = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
	NUMERALS     = "0123456789"
	ALPHANUMERIC = NUMERALS + ALPHABET
	ErrNegativeNum  = errors.Err("Number cannot be negative")
	ErrEmptyCharset = errors.Err("Charset cannot be empty")
)
type (
	BytesFunc  func(n int, charset string) ([]byte, error)
	StringFunc func(n int, charset string) (string, error)
)
var B BytesFunc = func(n int, charset string) ([]byte, error) {
	if n <= 0 || len(charset) == 0 {
		panic("negative number or empty charset")
	}
	result := make([]byte, n)
	charnum := big.NewInt(int64(len(charset)))
	for i := 0; i < n; i++ {
		r, err := rand.Int(rand.Reader, charnum)
		if err != nil {
			return nil, err
		}
		result[i] = charset[int(r.Int64())]
	}
	return result, nil
}
var S StringFunc = func(n int, charset string) (string, error) {
	b, err := B(n, charset)
	if err != nil {
		return "", err
	}
	return string(b), nil
}
func (f BytesFunc) Numberal(n int) ([]byte, error) {
	return f(n, NUMERALS)
}
func (f BytesFunc) Alphabet(n int) ([]byte, error) {
	return f(n, ALPHABET)
}
func (f BytesFunc) Alphanumeric(n int) ([]byte, error) {
	return f(n, ALPHANUMERIC)
}