首页 > 解决方案 > 将值间接添加到嵌套结构

问题描述

我在 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"

直接解决当然没问题。有没有办法实现间接解决方案,我可以将嵌套对象作为参数放入其中?

标签: gostruct

解决方案


您可以使用反射(反射包)。

categories:= Categories{}
reflect.ValueOf(&categories).
    Elem().
    FieldByName("A").
    FieldByName("Foo").SetString("Salute")

PLAYGROUND


推荐阅读