У меня есть функция, которая выглядит следующим образом:Go: Передача возвращаемого значения через интерфейс {} указатель
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 не работает. Unmarshal, чтобы результат, а не указатель на результат. 'json.Unmarshal ([] byte (some_string), result)'. –