Go 指定reflect.ValueOf应返回的值
我有这样一个结构:Go 指定reflect.ValueOf应返回的值,go,reflection,Go,Reflection,我有这样一个结构: type Time struct { Time time.Time Valid bool } 现在,如果我在初始化为的Time结构上调用reflect.ValueOf(),比如说Time.Now()和false,我将得到以下结果: {2018-06-09 15:03:17.4320396 false} 是否有办法更改结构(添加方法?重命名字段?),使reflect只返回time.time值,而不返回bool值? 有点像Valuer/Scanner界面对SQ
type Time struct {
Time time.Time
Valid bool
}
现在,如果我在初始化为的Time
结构上调用reflect.ValueOf()
,比如说Time.Now()
和false
,我将得到以下结果:
{2018-06-09 15:03:17.4320396 false}
是否有办法更改结构(添加方法?重命名字段?),使reflect
只返回time.time
值,而不返回bool
值?
有点像Valuer/Scanner界面对SQL查询所做的那样,但是使用
reflect
否,这是不可能的。抱歉。在Go中,您不能向先前声明的结构类型“添加方法”或“重命名字段”。不可能。你能更明确地说明你实际上想做什么吗?可能会提供一些您需要处理的输入代码和您想要生成的输出代码?此外,除非您更改std lib的源代码,否则您无法更改reflect.ValueOf
的行为。它将始终重新运行作为唯一参数传递给它的值的reflect.Value
表示。您不能以某种方式“指定”它应该返回它通常运行的内容以外的内容。那是不可能的。