问题描述
在Go中,我因参考问题而无法完成一项小任务。我试图在下面的代码中模拟该问题。
package main
import (
"encoding/json"
"fmt"
)
type tRes struct {
a string
b interface{}
}
func get(t string,r interface{}) error {
var res tRes
switch t {
case "string":
res = tRes{
a: "XYZ",b: "Nobody",}
case "int":
res = tRes{
a: "XYZ",b: 10,}
}
// r = &res.b
j,_ := json.Marshal(res.b)
json.Unmarshal(j,&r)
return nil
}
func main() {
var b string
get("string",&b)
fmt.Println(b)
var i int
get("int",&i)
fmt.Println(i)
}
在代码中,get方法根据类型返回一个值。如果我使用r = &res.b
则无效,而j,_ := json.Marshal(res.b) json.Unmarshal(j,&r)
则有效。我不想像实际代码中那样在一个非常大的对象上进行JSON编组和解组,我正在调用一个返回大对象的API。我做json unmarshal来创建主对象,然后将一个子对象(定义为interface {})分配给响应(可能是不同类型)作为对我不起作用的引用。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)