首页 > 解决方案 > 在 Gorm 中动态获取字段的大小

问题描述

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

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

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在运行时获得价值?

标签: gogo-gorm

解决方案


有了这个reflect包我们可以!

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

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


推荐阅读