は、私はこのようになります機能があります。ゴーは:インターフェース{}ポインタを経由して戻り値を渡す
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 ???
...
}
結果にこの新しい値を割り当てる方法はありますか?私はデータを文字列に整列化し、それを非整列化して結果として得られることがわかったが、それが最善の方法であるとは想像できない。あなたが行うことができます
からタイプのスイッチを参照してください。結果へのポインタではなく、結果を非整列化します。 'json.Unmarshal([]バイト(some_string)、結果)'。 –