iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0

Golang

Validator 資料驗證

如果我們有需要做資料或者數據相關的檢驗,我們可以考慮使用validator,跟先前一樣,需要先在終端機使用go get取得該套件,然後在import引用該套件。

直接上個範例程式碼來瞧瞧

package main

import (
	"fmt"
	"github.com/go-playground/validator"
)

type User struct {
	Username string `validate:"min=4,max=10"`
	Age      uint8  `validate:"gte=1,lte=10"`
	Sex      string `validate:"oneof=female male"`
}

func main() {
	validate := validator.New()

	user1 := User{Username: "tom", Age: 11, Sex: "null"}
	err := validate.Struct(user1)
	if err != nil {
		fmt.Println(err)
	}

	user2 := User{Username: "Annabelle", Age: 8, Sex: "male"}
	err = validate.Struct(user2)
	if err != nil {
		fmt.Println(err)
	}

}

執行起來會得到

Key: 'User.Username' Error:Field validation for 'Username' failed on the 'min' tag
Key: 'User.Age' Error:Field validation for 'Age' failed on the 'lte' tag
Key: 'User.Sex' Error:Field validation for 'Sex' failed on the 'oneof' tag

從字面上來理解看看發生了什麼事情
User.Username 不符合min的規範
User.Age 不符合lte的規範
User.Sex 不符合oneof的規範

那我們可以設定那些規則呢?

  • len 等於(長度)
  • max 最大長度
  • min 最小長度
  • eq 等於(值)
  • ne 不等於該值
  • gt 大於該值
  • gte 大於等於該值
  • lt 小於該值
  • lte 小於等於該值
  • onof 必須是其中之一

所以回來看剛剛的code

	Username string `validate:"min=4,max=10"`
	Age      uint8  `validate:"gte=1,lte=10"`
	Sex      string `validate:"oneof=female male"`

Username 最小是4 最大是10
Age 必須大於等於1,小於等於10
Sex 必須是male和female其中一個


上一篇
Golang 測試
下一篇
加點GCP – cloud function
系列文
go go let's go - golang 從0開始30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言