为了账号安全,请及时绑定邮箱和手机立即绑定

接口内反射阵列

接口内反射阵列

Go
饮歌长啸 2023-05-22 16:52:21
我正在尝试通过反射访问接口中的数组。在其他字段中,我还有一个字符串数组: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任何想法我做错了什么?
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

    无需双重反射,您可以像这样迭代 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())

}


查看完整回答
反对 回复 2023-05-22
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信