这是我结构体:
type User struct {
Name `validate:"custom_validation"`
}
这是我自定义验证:
func customFunc(fl validator.FieldLevel) bool {
// I want to get struct name inside here
// do some validations...
return true
}
validate.RegisterValidation("custom_validation", customFunc)
原因是我需要对数据库做一些检查,我需要表名,因此我需要结构体名,因为表名与结构体名相似。如果我硬编码表名,则此customFunc
不能用于在其他结构体中进行验证。
我怎么能那样做呢?
参考https://pkg.go.dev/github.com/go-playground/validator/v10#hdr-Custom_Validation_Functions
1条答案
按热度按时间ovfsdjhp1#
简单
取得字段名称:
fl.FieldName()
获取字段值:
fl.Field().String()
获取结构类型:
fl.Parent().Type().String()