为了账号安全,请及时绑定邮箱和手机立即绑定

将继承的结构作为基础对象传回

将继承的结构作为基础对象传回

Go
料青山看我应如是 2021-12-20 10:23:35
我确定这是一个语法问题,我还没有用 Go 解决 -我得到的错误——不能在extractBucket的参数中使用*term(类型elastic.AggregationBucketKeyItem)作为类型elastic.Aggregations产生错误的那一行是"Value": extractBucket(parts[1:], *term),相关代码,用于上下文// from https://github.com/olivere/elastic/blob/v3.0.22/search_aggs.gotype Aggregations map[string]*json.RawMessagetype AggregationBucketSignificantTerms struct {    Aggregations    DocCount int64                               //`json:"doc_count"`    Buckets  []*AggregationBucketSignificantTerm //`json:"buckets"`    Meta     map[string]interface{}              // `json:"meta,omitempty"`}// my codefunc extractBucket(parts []string, aggs elastic.Aggregations) interface{} {    // bunch of code removed           terms, found := aggs.Terms(part)           for _, term := range terms.Buckets {            if len(parts) == 0 {                retval[(term.Key).(string)] = map[string]interface{}{                    "Count": term.DocCount,                }            } else {                retval[(term.Key).(string)] = map[string]interface{}{                    "Count": term.DocCount,                    "Value": extractBucket(parts[1:], *term),                }            }        }}
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

嵌入类型会使您“继承”该类型,这是一个常见的误解。即使AggregationBucketSignificantTerms 嵌入Aggregations,它也不是编译器的一个。它只有一个 type 字段Aggregations,并在其顶层提供该类型的方法。感觉有点像继承,但可能不是您对 Java 子类之类的东西所习惯的。

要解决它,您可以尝试"Value": extractBucket(parts[1:], *term.Aggregations),,但我不清楚这是否会解决您的问题。


查看完整回答
反对 回复 2021-12-20
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

好吧,错误是不言自明的:

不能使用 (*term, variable name) (type elastic.AggregationBucketKeyItem <-- Variables current type) as (type elastic.Aggregations <-- Expected type) in argument to extractBucket

不管你的*term价值

产生者: for _, term := range terms.Buckets {

不是函数的正确类型

extractBucket(parts []string, aggs elastic.Aggregations)

采取一种 elastic.Aggregations


查看完整回答
反对 回复 2021-12-20
  • 2 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信