GoFrame 數(shù)據(jù)校驗(yàn)-FAQ

2022-03-30 14:30 更新

Struct默認(rèn)值對(duì)required規(guī)則的影響

?Struct?的屬性會(huì)有默認(rèn)值,在某些情況下會(huì)引起?required?規(guī)則的失效。例如:

type User struct {
	Name string `v:"required"`
	Age  uint   `v:"required"`
}

在該結(jié)構(gòu)體校驗(yàn)中,?Age?屬性的?required?校驗(yàn)將會(huì)失效,因?yàn)?Age?即便沒(méi)有輸入也會(huì)有默認(rèn)值?0?。

這里有三種解決方案:

  1. (推薦)使用?Struct?校驗(yàn)的?Assoc?聯(lián)合校驗(yàn)方法設(shè)置聯(lián)合校驗(yàn)參數(shù),在校驗(yàn)?Struct?類型參數(shù)時(shí),參數(shù)值將以?Assoc?方法中給定的參數(shù)為準(zhǔn)執(zhí)行校驗(yàn)。
  2. 使用組合校驗(yàn)規(guī)則來(lái)彌補(bǔ)默認(rèn)值對(duì)?required?規(guī)則,例如以上示例中將?Age?屬性的校驗(yàn)規(guī)則修改為?required|min:1?將能達(dá)到業(yè)務(wù)校驗(yàn)的效果。
  3. 將屬性改為指針類型,例如?*int?、?*float64?、?*g.Var?等,通過(guò)指針類型默認(rèn)值為?nil?的特點(diǎn)繞過(guò)了這個(gè)問(wèn)題。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)