我在 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 marshal 和 unmarshal,我正在调用一个返回大对象的 API。我执行 json unmarshal 来创建主对象,然后将一个子对象(定义为 interface{})分配给响应(可能是不同的类型)作为对我不起作用的参考。
摇曳的蔷薇
慕的地6264312
相关分类