ProductPromotion
Logo

Go.Lang

made by https://0x3d.site

GitHub - lyonnee/hvalid: hvalid is a lightweight validation library written in Go language.(一个用Go语言编写的轻量级验证库)
hvalid is a lightweight validation library written in Go language.(一个用Go语言编写的轻量级验证库) - lyonnee/hvalid
Visit Site

GitHub - lyonnee/hvalid: hvalid is a lightweight validation library written in Go language.(一个用Go语言编写的轻量级验证库)

GitHub - lyonnee/hvalid: hvalid is a lightweight validation library written in Go language.(一个用Go语言编写的轻量级验证库)

hvalid

English 中文

hvalid is a lightweight validation library written in Go language. It provides a custom validator interface and a series of common validation functions to help developers quickly implement data validation.

Go Report Card GitHub go.mod Go version codecov

Features

  • Generic support: Can validate any type of data, including basic types, structs, slices, etc.
  • Easy to use: Offers a concise API for developers to quickly perform parameter validation.
  • Extensible: Allows custom validation rules to meet different validation needs.
  • Friendly error messages: Returns clear error messages when validation fails, making it easy for developers to locate issues.

Installation

Install using the go get command:

go get github.com/lyonnee/hvalid

Usage Examples

Basic Type Validation

import (
	"errors"
	"github.com/lyonnee/hvalid"
)

func main() {
	// Validate string length
	err := hvalid.Validate[string]("hello", hvalid.MinLen[string](3))
	if err != nil {
		// Handle error
	}

	// Validate number range
	err = hvalid.Validate[int](10, hvalid.Min(5), hvalid.Max(15))
	if err != nil {
		// Handle error
	}
}

Struct Validation

type User struct {
	Name  string
	Email string
	Age   int
}

func UserValidator() hvalid.ValidatorFunc[User] {
	return hvalid.ValidatorFunc[User](func(user User) error {
		if user.Age < 18 {
			return errors.New("Age must be greater than 18")
		}

		return hvalid.Validate[string](user.Email, hvalid.Email())
	})
}

func main() {
	user := User{
		Name:  "Zhang San",
		Email: "[email protected]",
		Age:   20,
	}

	err := hvalid.Validate[User](user, UserValidator())
	if err != nil {
		// Handle error
	}
}

Custom Validation Rules

func IsPositive(errMsg ...string) hvalid.ValidatorFunc[int] {
	return hvalid.ValidatorFunc[int](func(num int) error {
		if num <= 0 {
			if len(errMsg) > 0 {
				return errors.New(errMsg[0])
			}
			return errors.New("The number must be positive")
		}
		return nil
	})
}

func main() {
	err := hvalid.Validate[int](10, IsPositive())
	if err != nil {
		// Handle error
	}
}

Testing

The project includes unit tests, run all tests with the go test command:

go test ./...

Contributing

Issues and pull requests are welcome to improve hvalid.

License

hvalid is released under the MIT License. See the LICENSE file for more information.

Articles
to learn more about the golang concepts.

Resources
which are currently available to browse on.

mail [email protected] to add your project or resources here 🔥.

FAQ's
to know more about the topic.

mail [email protected] to add your project or resources here 🔥.

Queries
or most google FAQ's about GoLang.

mail [email protected] to add more queries here 🔍.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory