Jim Myhrberg f24d999dff chore(ci/lint/config): update golangci-lint configuration and workflows
Refactor the golangci-lint configuration to use the latest version and
update GitHub Actions workflows. Key changes include:

- Update golangci-lint to v2.6
- Update GitHub Actions to use latest checkout and setup-go actions
- Update Go versions in test matrix
- Remove deprecated cache steps
- Update Makefile golangci-lint tool version
- Minor documentation formatting improvements
2025-10-30 21:24:28 +00:00
2021-08-23 13:02:44 +01:00
2021-08-22 21:53:02 +01:00
2021-08-22 21:53:02 +01:00
2021-08-22 22:10:33 +01:00

go-validate

Yet another Go struct/object validation package, with a focus on simplicity, flexibility, and full control over validation logic.

Go Reference GitHub tag (latest SemVer) Actions Status Coverage GitHub issues GitHub pull requests License Status

Add validation to any type, by simply implementing the Validatable interface:

type Validatable interface {
	Validate() error
}

Import

import "github.com/romdo/go-validate"

Example

type Order struct {
	Books []*Book `json:"books"`
}

type Book struct {
	Title  string `json:"title"`
	Author string `json:"author"`
}

func (s *Book) Validate() error {
	var errs error
	if s.Title == "" {
		errs = validate.Append(errs, &validate.Error{
			Field: "Title", Msg: "is required",
		})
	}

	// Helper to perform the same kind of check as above for Title.
	errs = validate.Append(errs, validate.RequireField("Author", s.Author))

	return errs
}

func main() {
	errs := validate.Validate(&Order{Books: []*Book{{Title: ""}}})

	for _, err := range validate.Errors(errs) {
		fmt.Println(err.Error())
	}
}

Above example produces the following output:

books.0.title: is required
books.0.author: is required

Documentation

Please see the Go Reference for documentation and examples.

LICENSE

MIT

Description
Yet another Go struct/object validation package, with a focus on simplicity, flexibility, and full control over validation logic.
Readme MIT 164 KiB
Languages
Go 94%
Makefile 6%