go - 如何使用反射来设置嵌套的结构域值

标签 go struct nested

我正在使用Go创建一个嵌套结构并填充它。我在结构中有一个需要设置自己的自定义字段,但这是在外部结构的字段中使用的类型。例如:

type Case struct {
   CaseID            string         `json:"caseID"`
   CaseStatus        string         `json:"caseStatus"`
   Kit_Details       []Kit_Details  `json:"kit_Details"`
}

type Kit_Details struct {
    KitID          string    `json:"kitID"`
    KitStatus      string    `json:"kitStatus"`
}

我创建了一个嵌套结构。我想在程序中使用Case结构更新KitStatus字段,这意味着如果我从中访问Case结构,如何移动到Kit_Details结构并更新结构的字段。
有人可以帮助我如何使用FieldByName("KitStatus")和使用SetString("New value")遍历Case结构的字段来更新该字段的值。

最佳答案

您可以这样使用:

v := reflect.ValueOf(test)
fmt.Println("Value of test before update", v)
v.FieldByName("Kit_Details").Index(0).FieldByName("KitStatus").SetString("abcdsdf")

您可以使用循环遍历所有元素,并使用Index()更新它们。

Go play ground link

关于go - 如何使用反射来设置嵌套的结构域值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58608027/

相关文章:

Go Golang - 嵌入类型和 "len/range"

object - Golang - 通过接口(interface)通过 2 步解码/重建对象

即使释放指向结构的指针后也会发生 C 内存泄漏

go - 结构中的空字段会消耗内存吗?

c++ - gcc编译错误: member of nested class A in template class Table is not visible in nested friend class. 为什么?

nested - 减少 javascript 中的嵌套对象数组

arrays - go 垃圾会收集部分 slice 吗?

go - 向后拆分N?

c - 在函数内部填充动态分配的结构

python - 想要找到一种对多个列表进行平均的方法