反射怎么判断struct中的字段没有赋值?

bianweiall · · 10134 次点击
polaris
社区,需要你我一同完善!
由于 Go 中类型都会有零值,你的例子中, Id 和 Level 没有赋值,默认会是 0,因此只能判断是否是 0,没法判断是否有赋值(因为有可能手动赋值为0),示例代码如下: package main import ( "fmt" "reflect" ) func main() { type Category struct { Id int Name string Level int Fid int } var c Category c.Name = "xxx" c.Fid = 1 var i interface{} = c value := reflect.ValueOf(i) levelVal := value.FieldByName("Level") if levelVal.Int() == 0 { fmt.Println("level is zero") } }
#1
更多评论
谢谢你了! 本来我想update到数据库时先判断哪几个字段需要更新的,看来这样是不行了,不如直接写在SET后面了
#2
哥们 你这个问题最后是怎么解决的?我也遇到这种情况了?
#3