package main
import (
"errors"
"fmt"
)
type ValidationError struct {
Field string
Message string
}
func (e *ValidationError) Error() string {
return fmt.Sprintf("invalid %s: %s", e.Field, e.Message)
}
func validate(name string) error {
if name == "" {
return &ValidationError{Field: "name", Message: "cannot be empty"}
}
if len(name) > 50 {
return &ValidationError{Field: "name", Message: "too long"}
}
return nil
}
func main() {
err := validate("")
fmt.Println(err) // invalid name: cannot be empty
var ve *ValidationError
if errors.As(err, &ve) {
fmt.Printf("field=%s reason=%s\n", ve.Field, ve.Message)
}
}
Create a free account and build your private vault. Share publicly whenever you want.