在 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
我正在寻找一种从 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