Go Validator

Built-in Range Validators

Range Validators

MinLength(min int)

Checks if a string meets a minimum length requirement.

Usage Example:

 
validator.CreateValidator(validator.MinLength(6), "Password must be at least 6 characters long")
 

MaxLength(max int)

Checks if a string meets a maximum length requirement.

Usage Example:

 
validator.CreateValidator(validator.MaxLength(20), "Username must be at most 20 characters long")
 

Length(min, max int)

Checks if a string meets a length requirement within a range.

Usage Example:

 
validator.CreateValidator(validator.Length(6, 20), "Password must be between 6 and 20 characters long")
 

Min(min float64)

Checks if a numeric value is greater than or equal to a minimum value.

Usage Example:

 
validator.CreateValidator(validator.Min(18), "Age must be at least 18")
 

Max(max float64)

Checks if a numeric value is less than or equal to a maximum value.

Usage Example:

 
validator.CreateValidator(validator.Max(100), "Score must be at most 100")
 

Each(validatorFunc ValidatorFunc)

Checks if every element in a slice or array satisfies the provided validator function.

Usage Example:

 
validator.CreateValidator(validator.Each(validator.IsNumber), "All elements must be numbers")
 

Complete Example for Range Validators

Here’s an example demonstrating the use of range validators:

 
package main
 
import (
    "fmt"
    "github.com/kthehatter/go-validator/validator"
)
 
func main() {
    body := map[string]interface{}{
        "username": "user123",
        "password": "password123",
        "age":      25,
        "scores":   []interface{}{90, 85, 95},
    }
 
    validationOptions := []validator.ValidationOption{
        {
            Key: "username",
            Validators: []validator.Validator{
                validator.CreateValidator(validator.MinLength(5), "Username must be at least 5 characters long"),
                validator.CreateValidator(validator.MaxLength(15), "Username must be at most 15 characters long"),
            },
        },
        {
            Key: "password",
            Validators: []validator.Validator{
                validator.CreateValidator(validator.Length(8, 20), "Password must be between 8 and 20 characters long"),
            },
        },
        {
            Key: "age",
            Validators: []validator.Validator{
                validator.CreateValidator(validator.Min(18), "Age must be at least 18"),
                validator.CreateValidator(validator.Max(100), "Age must be at most 100"),
            },
        },
        {
            Key: "scores",
            Validators: []validator.Validator{
                validator.CreateValidator(validator.Each(validator.IsNumber), "All scores must be numbers"),
            },
        },
    }
 
    err := validator.Validate(body, validationOptions)
    if err != nil {
        fmt.Println("Validation error:", err)
    } else {
        fmt.Println("Validation succeeded!")
    }
}

Explanation of Range Validators

  1. MinLength and MaxLength:

    *These functions validate the length of a string.

    *Useful for fields like usernames, passwords, or descriptions.

  2. Length:

    *Combines MinLength and MaxLength to validate that a string is within a specific range.

    *Ideal for fields with strict length requirements.

  3. Min and Max:

    *Validate numeric values (integers or floats) against minimum and maximum thresholds.

    *Commonly used for age, scores, or other numeric inputs.

  4. Each:

    *Validates every element in a slice or array using a provided validator function.

    *Useful for ensuring all elements in a list meet specific criteria.

On this page