【发布时间】:2016-04-06 09:17:18
【问题描述】:
我有一个看起来像这样的函数:
func Foo(result interface{}) error {
...
json.Unmarshal([]byte(some_string), result)
...
}
这样称呼:
var bar Bar
Foo(&bar)
通常,Foo 获取一个字符串,然后将其解组到结果中。但是,现在我需要更新它,以便 Foo 有时会从另一个源加载数据并返回它。
type Loader func() (interface{})
func Foo(result interface{}, Loader load) error {
...
data := load()
// result = data ???
...
}
我有什么方法可以将这个新值分配给结果?我发现我可以将数据编组为字符串,然后将其解组为有效的结果,但我无法想象这是最好的方法。
【问题讨论】:
-
Foo 的第一个版本不起作用。解组到结果,而不是指向结果的指针。
json.Unmarshal([]byte(some_string), result).