亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何像 Javascript 的 Joi 一樣驗證 Go 對象數據?

如何像 Javascript 的 Joi 一樣驗證 Go 對象數據?

Go
呼如林 2023-05-22 17:18:44
我使用Joi在 JavaScript 中執行對象模式和數據驗證。在 Golang 中,我知道如何進行模式驗證,但我如何進行數據驗證?Golang 是否有 Joi 等價物?我知道 Godog,但它還沒有達到 1.0。
查看完整描述

1 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

嘗試 ozzo-validation?

package main


import (

? ? "fmt"

? ? "regexp"


? ? "github.com/go-ozzo/ozzo-validation"

? ? "github.com/go-ozzo/ozzo-validation/is"

)


type Address struct {

? ? Street string

? ? City? ?string

? ? State? string

? ? Zip? ? string

}


func (a Address) Validate() error {

? ? return validation.ValidateStruct(&a,

? ? ? ? // Street cannot be empty, and the length must between 5 and 50

? ? ? ? validation.Field(&a.Street, validation.Required, validation.Length(5, 50)),

? ? ? ? // City cannot be empty, and the length must between 5 and 50

? ? ? ? validation.Field(&a.City, validation.Required, validation.Length(5, 50)),

? ? ? ? // State cannot be empty, and must be a string consisting of two letters in upper case

? ? ? ? validation.Field(&a.State, validation.Required, validation.Match(regexp.MustCompile("^[A-Z]{2}$"))),

? ? ? ? // State cannot be empty, and must be a string consisting of five digits

? ? ? ? validation.Field(&a.Zip, validation.Required, validation.Match(regexp.MustCompile("^[0-9]{5}$"))),

? ? )

}


func main() {

? ? a := Address{

? ? ? ? Street: "123",

? ? ? ? City:? ?"Unknown",

? ? ? ? State:? "Virginia",

? ? ? ? Zip:? ? "12345",

? ? }


? ? err := a.Validate()

? ? fmt.Println(err)

? ? // Output:

? ? // Street: the length must be between 5 and 50; State: must be in a valid format.

}


查看完整回答
反對 回復 2023-05-22
  • 1 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號