首頁  >  文章  >  後端開發  >  Golang 驗證器自訂枚舉驗證規則

Golang 驗證器自訂枚舉驗證規則

王林
王林轉載
2024-02-09 08:06:33587瀏覽

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

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中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除