package validate import "unicode/utf8" var ( ErrMustBeLonger = NewError("must contain at least %d characters") ErrMustBeShorter = NewError("must contain no more than %d characters") ) // MaxLength validates that a string is no longer than a given maximum. // Length is counted in runes, so multi-byte characters count as one. func MaxLength(l int) func(string) error { return func(value string) error { if utf8.RuneCountInString(value) > l { return ErrMustBeShorter.With(l) } return nil } } // MinLength validates that a string is at least a given minimum length. // Length is counted in runes, so multi-byte characters count as one. func MinLength(l int) func(string) error { return func(value string) error { if utf8.RuneCountInString(value) < l { return ErrMustBeLonger.With(l) } return nil } }