I got frustrated with runtime reflection in Go validators, so I built a codegen approach instead.
govalid reads struct markers and generates plain Go validation code. No reflection, no allocations at runtime, 5-44x faster than go-playground/validator. Also supports CEL for complex rules.
Feedback welcome :)