validator

package module
v0.1.17 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 22, 2025 License: MIT Imports: 9 Imported by: 1

README

Validator

validator is a lightweight, thread-safe, and extensible struct validation library for Go. It uses struct tags to define validation rules and supports custom validators out of the box.


✨ Features

  • ✅ Tag-based struct validation
  • 🔒 Thread-safe validator registration
  • 🧩 Support for custom validation rules
  • 🪶 Lightweight with no external dependencies
  • ⚙️ Built-in rules for common use cases (e.g., required, email, min, max)

📦 Installation

go get github.com/godev90/validator

📘 Basic Example

Here's a complete working example using common rules like required, email, and min.

package main

import (
    "fmt"
    "github.com/godev90/validator"
)

type User struct {
    Name  string `validate:"required"`
    Email string `validate:"required,email"`
    Age   int    `validate:"min=18"`
}

func main() {
    user := User{
        Name:  "",
	Email: "invalid-email",
	Age:   16,
    }

    err := validator.ValidateStruct(user)
    if err != nil {
	fmt.Println("Validation failed:")
	fmt.Println(err)
	return
    }

    fmt.Println("Validation passed!")
}

🔧 Advanced Example (Custom Validator)

Register your own validation even.

package main

import (
    "fmt"
    "github.com/godev90/validator"
)

func init() {
    validator.RegisterValidator("even", func(value any, param string) error {
	num, ok := value.(int)
	if !ok {
	    return fmt.Errorf("invalid type for even check")
        }

        if num%2 != 0 {
	    return fmt.Errorf("must be an even number")
	}

	return nil
    })
}

type Transaction struct {
    Amount int    `validate:"required,even"`
    Code   string `validate:"required,min=4,max=10"`
}

func main() {
    tx := Transaction{
        Amount: 7,
        Code:   "AB",
    }

    err := validator.ValidateStruct(tx)
    if err != nil {
        fmt.Println("Validation failed:")
        fmt.Println(err)
        return
    }

    fmt.Println("Validation passed!")
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterValidator

func RegisterValidator(name string, fn RuleFunc)

func ValidateStruct

func ValidateStruct(dest any) error

Types

type RuleFunc

type RuleFunc func(value any, param string) error

func GetValidator

func GetValidator(name string) (RuleFunc, bool)

type Validator

type Validator interface {
	Validate() error
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL