【问题标题】:How to use reflection to set nested struct field values如何使用反射设置嵌套结构字段值
【发布时间】:2019-10-29 13:04:32
【问题描述】:

我正在使用 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") 循环遍历 Case 结构的字段并使用 SetString("New value") 更新该字段的值。

【问题讨论】:

标签: go struct nested


【解决方案1】:

你可以这样使用:

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

【讨论】:

  • 如果我想将所有更新的值存储在现有结构中,那么该怎么做。我正在发布我正在尝试的方式
  • 请在去游乐场@Suva 发布您尝试过的方式。也请接受我的回答并投赞成票,这对您有帮助。谢谢。
  • @Fahim,请找到去游乐场链接play.golang.org/p/7EKOtsyzCBJ
猜你喜欢
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
相关资源
最近更新 更多