【发布时间】:2021-11-01 10:47:35
【问题描述】:
我正在编写一个可以帮助我设置对象的任何字段值的工具,但是有一个问题。
我有两个结构 Player 和 Card:
type Player struct {
Name string
IDCard Card
}
type Card struct {
ID string
}
有功能
func setVal(data interface{}, fieldPath []string, val string) {
// ...
}
该函数要做的是将数据的特定字段值设置为val。 例如
p := Player{
Name: "Tsuru",
IDCard: Card{ID: "id"},
}
fieldPath_Name := []string{"Name"}
fieldPath_ID := []string{"IDCard", "ID"}
setVal(&p, fieldPath_Name, "Miku") // set p.Name to "Miku"
setVal(&p, fieldPath_ID, "newID") // set p.IDCard.ID to "newID"
表示在对象p的字段IDCard中设置Name字段为“Miku”,ID为“newID”。
我的方法是使用golang reflect 根据fieldPath递归获取每个字段的值和类型。
现在name设置可以成功,但是如何完成ID设置呢? IDCard 是一个结构体,是 Player 的字段之一。
谢谢!
【问题讨论】:
-
“我的方法是使用golang reflect 根据fieldPath递归获取每个字段的值和类型。” -- 那个方法在哪里?可以分享一下吗?
标签: go reflection