请教 Go 用反射修改结构体的值的问题
如果是普通的结构体,遍历 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
0条评论