【发布时间】:2020-06-01 02:13:34
【问题描述】:
假设我在 Go 中有一个如下所示的结构:
LastUpdate struct {
Name string `yaml:"name"`
Address string `yaml:"address"`
Phone string `yaml:"phone"`
}
现在假设我想创建一个接受字段名称(例如“电话”)的函数,然后将该字段更新为一个值,例如今天的日期。
如何构建函数以使其接受字段名称并在结构中更新该字段?
我知道我可以为每个场景创建一个 IF 子句(如果 field == "Phone"){var.LastUpdate.Phone = time.Now().Date()},但我想构建这个函数,这样我以后每次向该结构添加新成员时都不必添加 IF 子句。想法?
【问题讨论】:
-
标准库中的
reflect包可以对结构等类型进行自省。需要按顺序遍历字段以按名称查找。设置字段值是可能的,但在传入可能不兼容的值(或类型)时会变得非常棘手。这是一个滑坡,不适合胆小的人。如果您是go的新手,我强烈建议您不要这样做。 -
这能回答你的问题吗? Golang dynamic access to a struct property
标签: go data-structures struct updates