I was trying to implement a function to print the structure tree of an interface{}
with reflection and DFS.
But I find it's hard to get dereference of a multiple level pointer (NumField()
can not be used with a pointer). Just like:
func Tree(i interface{}) {
......
}
var a = 10
var b = &a
var c = &b
Tree(c)
In my opinion, maybe:
for reflect.ValueOf(i).Kind() == reflect.Ptr {
t := i.(reflect.Typeof(i))
i = *t
}
could work, but it doesn't.
Is there any way to resolve this?