type Category struct {
Id int
Name string
Level int
Fid int
}
var c Category
c.Name="xxx"
c.Fid=1
现在我想用反射判断Id和Level着两个字段没有赋值,需要怎么办?
更多评论
由于 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