英文:
Add values indirect to nested struct
问题
我在Golang中设置了一个嵌套结构,并且我想间接地填充它的值。
type Categories struct {
A ABCDE `json:"A"`
B ABCDE `json:"B"`
C ABCDE `json:"C"`
D ABCDE `json:"D"`
E ABCDE `json:"E"`
}
type ABCDE struct {
Foo string `json:"foo"`
}
直接赋值当然是可以的:
categories := Categories{}
categories.A.Foo = "Salute"
间接赋值的伪代码如下:
categories := Categories{}
categories["A"].Foo = "Salute"
直接赋值当然没有问题。有没有办法实现间接赋值的解决方案,以便我能够将嵌套对象作为参数放入其中?
英文:
i setup a nested struct in Golang and i want to fill it with values indirect.
type Categories struct {
A ABCDE `json:"A"`
B ABCDE `json:"B"`
C ABCDE `json:"C"`
D ABCDE `json:"D"`
E ABCDE `json:"E"`
}
type ABCDE struct {
Foo string `json:"foo`
}
Direct is working of course:
categories:= Categories{}
Categories.A.Foo = "Salute"
Indirect as pseudo code:
categories:= Categories{}
Categories.["A"].Foo = "Salute"
Direct solution is of course no problem. Is there a way to implement the indirect solution, that i am able to put the nested object inside as parameter?
答案1
得分: 1
你可以使用反射(reflect包)。
categories := Categories{}
reflect.ValueOf(&categories).
Elem().
FieldByName("A").
FieldByName("Foo").SetString("Salute")
英文:
You can use reflection (reflect package).
categories:= Categories{}
reflect.ValueOf(&categories).
Elem().
FieldByName("A").
FieldByName("Foo").SetString("Salute")
<kbd>PLAYGROUND</kbd>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论