php小编小新今天给大家介绍一款强大的Golang验证器——自定义枚举验证规则。随着Golang的流行,越来越多的开发者开始使用它来构建高效、可靠的应用程序。而验证器是其中一个重要的工具,它可以帮助我们验证输入的数据是否符合规定的格式和要求。自定义枚举验证规则是验证器的一个重要功能,它可以帮助我们定义自己的枚举类型,并对输入的数据进行验证。通过本文,我们将详细介绍如何在Golang中使用自定义枚举验证规则,以及一些实际应用场景。让我们一起来探索这个强大的功能吧!
我正在使用 https://github.com/go-playground/validator,我需要为不同的枚举值创建自定义验证规则。这是我的结构 - https://go.dev/play/p/UmR6YH6cvK9。如您所见,我有 3 种不同的用户类型:管理员、版主和内容创建者,我想为他们调整不同的密码规则。例如,管理员的密码长度应至少为 7 个符号,而版主的密码长度应至少为 5 个。是否可以通过 go-playground/validator 中的标签来做到这一点?
我的服务获取用户列表,需要使用不同的规则进行验证
您可以向 usertype
添加一个方法,该方法使用 validator
包来验证用户。
type usertype int const ( admin usertype = iota moderator contentcreator ) func (u usertype) validate() error { switch u { case admin: // validate admin case moderator: // validate moderator case contentcreator: // validate content creator default: return fmt.errorf("invalid user type") } return nil }
调用 validate 看起来像这样
func main() { a := User{ Type: Admin, Name: "admin", Password: "pass", LastActivity: time.Time{}, } err := a.Type.Validate() if err != nil { fmt.Println("invalid user: %w", err) } }
以上是Golang 验证器自定义枚举验证规则的详细内容。更多信息请关注PHP中文网其他相关文章!