【发布时间】:2018-03-03 10:25:35
【问题描述】:
我有一个指向各种原语的指针结构。该结构是应用程序的配置,字段是指针的原因是,我可以确定设置为默认值的字段和根本未设置的字段 - 强制执行“必需”字段。
这是一个简单的例子:
type Config struct {
A *string
B *int
C *bool
D *[]string // wildcard!
}
所以我通过reflect.ValueOf(*cfg) 获取reflect.Value,它会在每个元素上给我一个.Field,我会遍历它。
问题是,每个元素都没有通过CanAddr 或CanSet,我似乎找不到设置指针后面的值的方法。这是语言的限制吗?我需要使我的字段成为非指针吗?这很糟糕,因为无法确定用户是否指定了空字符串,或者根本没有设置它。
哦,设置/附加 [] 字符串字段的奖励积分!即使没有指针也让我感到困惑!
【问题讨论】:
标签: pointers go reflection struct