首页 > 解决方案 > 使用反射模拟 struct.field

问题描述

当字段是接口类型时,如何获得与reflect.TypeOf(struct.field)使用时相同的值?FieldByName

如此处所示,如果结构字段是接口,reflect.TypeOf(struct.field)则给我具体类型,但reflect.ValueOf(struct).FieldByName("field").Type()给我接口。struct.field如果我只有struct和,是否可以使用反射获取存储的具体类型"field"

标签: gostructreflection

解决方案


你应该使用Elem()

// Elem 返回接口 v 包含的值

提取类型的正确方法

reflect.ValueOf(h).Elem().FieldByName("i").Elem().Type().String()


推荐阅读