在 Gorm 中动态获取字段的大小

Dynamically get field's size in Gorm

我正在寻找一种从 GORM 模型动态获取字段大小的方法。

一个明显的用例是当您想要验证对象中保存的数据不超过 GORM 模型的定义以及数据库列大小时。

type MyStruct struct {
    field1 string `gorm:"size:10"`
}


func main(){
    s := MyStruct {field1: "abcdefghijklmnopqrstuvwxyz"}  // len 26 > 10 
    
    // if len(s.field1) < ...
    db.Create(&s)  // This will panic
}

有没有办法在运行时获取值 10

使用 reflect 包我们可以!

文档:https://golang.org/pkg/reflect/#StructTag

使用您给定的示例编写代码:https://play.golang.org/p/1tmvU2eTkHJ