In what way is reflection nasty?
What compile-time validation do I actually lose by using struct tags for CLI arg parsing?
What compile-time validation do I actually lose by using struct tags for CLI arg parsing?
Beware of microbenchmarks, but in my tests the above package only added around 0.001 ms over the standard library flag package. Even if real world usage increases that by several orders of magnitude, it isn't going to matter. No human will ever notice.