3 回答
TA贡献1804条经验 获得超8个赞
如果我理解正确,您想将数据解组为两种类型的切片:
type A struct {
Foo string `json:"foo"`
ID string `json:"id"`
}
type B struct {
Bar string `json:"bar"`
Baz string `json:"baz"`
Eee string `json:"eee"`
}
来自SearchHit Source。
JSON 包可以为您完成大部分工作:
func executeQuery(q Query, v interface{}) error {
// Get a SearchHit. I am making this up.
// I have no idea how the package works.
searchHit, err := getHit(q)
if err != nil {
return err
}
// This is the important part. Convert the raw message to
// a slice of bytes and decode to the caller's slice.
return json.Unmarshal([]byte(*searchHit.Source), v)
}
您可以调用此函数以解码为类型切片或指向类型的指针切片。
// Slice of type
var s1 []TypeA
if err := executeQuery(q1, &s1); err != nil {
// handle error
}
// Slice of pointer to type
var s2 []*TypeB
if err := error(q2, &s2); err != nil {
// handle error
}
我知道这不是问题的直接答案,但这就是通常处理这种情况的方式。
- 3 回答
- 0 关注
- 301 浏览
添加回答
举报