请教 Go 用反射修改结构体的值的问题

请教 Go 用反射修改结构体的值的问题,第1张

请教 Go 用反射修改结构体的值的问题,第2张

如果是普通的结构体,遍历 numField 根据 Field(i).Name 修改就可以了

但是如果遇到嵌套结构体怎么办

例如

type A struct {
  field1 string
  ...
  B
}

type B struct {
  field2 string
}

如何修改修改 field2 的值呢?

----------------------- 以下是精选回复-----------------------

答:1. 你这并不是嵌套结构体。。。
2. 这种结构可以考虑用 map 来处理
答:1. 私有变量改不了的.
2. struct 也是修改不了, 要 *B


type A struct {
Field1 string
*B
}

type B struct {
Field2 string
}

func main() {
a := A{B: &B{Field2: "123"}}
println(a.B.Field2)
v := reflect.ValueOf(&a)
v.Elem().FieldByName("B").Elem().FieldByName("Field2").Set(reflect.ValueOf("456"))
println(a.B.Field2)
}



https://play.golang.org/p/dJ5sWunyVby

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 请教 Go 用反射修改结构体的值的问题

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情