我确定这是一个语法问题,我还没想到Go -
我得到的错误 -
不能使用* term(类型elastic.AggregationBucketKeyItem)作为类型elastic.Aggregations in argumentBucket
产生错误的行是
"Value": extractBucket(parts[1:], *term),
相关代码,用于上下文
// from https://github.com/olivere/elastic/blob/v3.0.22/search_aggs.go
type Aggregations map[string]*json.RawMessage
type AggregationBucketSignificantTerms struct {
Aggregations
DocCount int64 //`json:"doc_count"`
Buckets []*AggregationBucketSignificantTerm //`json:"buckets"`
Meta map[string]interface{} // `json:"meta,omitempty"`
}
// my code
func 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),
}
}
}
}
答案 0 :(得分:2)
这个错误非常自我解释:
不能使用(* term,变量名)(类型elastic.AggregationBucketKeyItem< - 变量当前类型)作为(类型elastic.Aggregations< - 预期类型)在extractBucket的参数中
无论您的*term
值
生成者:for _, term := range terms.Buckets {
不是函数的正确类型
extractBucket(parts []string, aggs elastic.Aggregations)
采用elastic.Aggregations
答案 1 :(得分:2)
一种常见的误解是,嵌入一种类型会让你继承"继承"那种类型。即使String[] coords = smsBody.split(";");
String lat = coords[0];
String lng = coords[1];
Double newLat = Double.parseDouble(lat);
Double newLng = DOuble.parseDouble(lng);
mapActivityFragment mapFrag = new mapActivityFragment();
mapFrag.setLatLng(newLat, newLng);
嵌入 AggregationBucketSignificantTerms
,它也不是编译器的一个。它只有一个Aggregations
类型的字段,它在它的顶层提供该类型的方法。这感觉有点像继承,但可能不是你习惯于Java子类之类的东西。
要解决此问题,您可以尝试Aggregations
,但我不清楚这是否能解决您的问题。