登录
首页 >  Golang >  Go问答

Golang 验证器自定义枚举验证规则

来源:stackoverflow

时间:2024-04-27 19:15:49 363浏览 收藏

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学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>