这是我的 struct :

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)

原因是我需要对数据库进行一些判断,我需要该数据库的表名,因此我需要 struct 名,因为表名类似于 struct 名.如果我硬编码了表名,这个customFunc就不能用来在其他 struct 中进行验证.

我怎么能做到这一点?

参考文献:https://pkg.go.dev/github.com/go-playground/validator/v10#hdr-Custom_Validation_Functions

推荐答案

简单

获取该字段的名称:

fl.FieldName()

获取该字段的值:

fl.Field().String()

获取 struct 类型:

fl.Parent().Type().String()

Go相关问答推荐

如何从google.golang.org/grpc/stats包中将golang中不同事件的输出进行组合,以获取func HandlePRC

向API网关终结点发出POST请求时出现AWS Lambda With Go:";Rune me.InvalidEntrypoint";错误

如何在Golang中获取mp3文件的持续时间?

Golang使用Run()执行的命令没有返回

将DATE类型的SQL字段扫描到GO struct 字段

如何测试 Zerolog 记录器引发类型错误的日志(log)事件?

Kusto Go API 从多个表查询

htmx 表单 + gin 无法正确读取请求正文

使用 OpenTelemetry 统一不同服务的范围

当我的 go build 成功时,如何修复我的 docker build 失败? Dockerfile 包括 go mod 下载

Yocto 无法交叉编译 GoLang Wails 应用程序

Go:如何在将 float64 转换为 float32 时判断精度损失

从数据库中带有 imageurl 的文件夹中获取图像,并在我的浏览器中用 golang 中的 echo 显示

grpc-gateway:重定向与定义不匹配(原始文件)

github.com/rs/zerolog 字段的延迟判断

自定义指标未显示在 prometheus web ui 中,grafana 中也是如此

转到文本/模板模板:如何根据模板本身的值数组判断值?

带有 grpc 的 protobuf 用于拆分包中的 Go

如何断言类型是指向golang中接口的指针

获取单调时间,同 CLOCK_MONOTONIC