日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Go语言参数校验(go-playground / validator)

發布時間:2024/9/30 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go语言参数校验(go-playground / validator) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本使用Go語言沒有像Java一樣的注解快速進行參數的校驗,但可以通過struct tag(結構體標簽)進行序列化。常用的如:

type User struct {ID string `json:"id"`Name string `json:"name"`Age string `json:"age"` }

但需要更復雜的校驗,這時需要用一些專業的庫來完成。go-playground / validator作為一款優秀的Go語言校驗庫,基于標記為結構體和單個字段實現值驗證。使用簡單、快捷。

添加依賴

go get github.com/go-playground/validator

代碼

package mainimport ("fmt""github.com/go-playground/validator" )var validate *validator.Validate //定義type User struct {Name string `validate:"required"` //非空Age uint8 `validate:"gte=0,lte=120"` // 0<=Age<=120Email string `validate:"required,email"` //非空,email格式//dive關鍵字代表 進入到嵌套結構體進行判斷Address []*Address `validate:"dive"` // 可以擁有多個地址 } type Address struct {Province string `validate:"required"` //非空City string `validate:"required"` //非空Phone string `validate:"numeric,len=11"` //數字類型,長度為11 }func main() {validate = validator.New() //初始化(賦值)validateStruct() //結構體校驗validateVariable() //變量校驗 } func validateStruct() {address := Address{Province: "北京",City: "北京",Phone: "17694911282x",}user := User{Name: "朝陽",Age: 23,Email: "cy@inke.cn",Address: []*Address{&address},}err := validate.Struct(user)if err != nil {//斷言為:validator.ValidationErrors,類型為:[]FieldErrorfor _, e := range err.(validator.ValidationErrors) {fmt.Println("Namespace:", e.Namespace())fmt.Println("Field:", e.Field())fmt.Println("StructNamespace:", e.StructNamespace())fmt.Println("StructField:", e.StructField())fmt.Println("Tag:", e.Tag())fmt.Println("ActualTag:", e.ActualTag())fmt.Println("Kind:", e.Kind())fmt.Println("Type:", e.Type())fmt.Println("Value:", e.Value())fmt.Println("Param:", e.Param())fmt.Println()}fmt.Println("結構體輸入數據類型錯誤!")return} else {fmt.Println("結構體校驗通過")} }//變量校驗 func validateVariable() {myEmail := "123@qq.com" //郵箱地址:xx@xx.comerr := validate.Var(myEmail, "required,email")if err != nil {fmt.Println(err)} else {fmt.Println("變量校驗通過!")} }

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Go语言参数校验(go-playground / validator)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。