当前位置: > > > > 接口内反射阵列
来源:stackoverflow
2024-04-23 13:21:31
0浏览
收藏
大家好,今天本人给大家带来文章《接口内反射阵列》,文中内容主要涉及到,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!
问题内容
我正在尝试通过反射访问接口内的数组。
在其他字段中,我还有一个字符串数组:
type configuration struct { ... sysvars []string }
我可以像这样访问字段sysvars:
elem := reflect.valueof(conf).elem() sysvarsinterface := elem.fieldbyname("sysvars").interface()
此时,当使用 goland 的调试器时,我可以看到 sysvarsinterface 是一个具有我期望的两个值的接口。既然它是一个数组,我想我需要将它视为接口并再次反映它?所以它看起来像这样:
sysvarsvalue := reflect.valueof(&sysvarsinterface) sysvarselem := sysvarsvalue.elem()
但迭代失败:
for i:=0; i< sysvarselem.numfield(); i++ { vname := sysvarselem.type().field(i).name fmt.println(vname) }
说:
panic: reflect: call of reflect.Value.NumField on interface Value
有什么想法我做错了什么吗?
我用这个作为参考
解决方案
不需要双重反射,你可以像这样迭代sysvars:
p := &Configuration{ SysVars :[]string{"a","b","c"}, } s:= reflect.ValueOf(p).Elem().FieldByName("SysVars") for i:=0 ; i< s.Len() ; i++ { fmt.Println(s.Index(i).String()) }
文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《接口内反射阵列》文章吧,也可关注公众号了解相关技术文章。