我正在尝试通过弹性搜索获取搜索结果,但出现此错误:
cannot use true (type bool) as type string in function argument
请任何人可以帮助解决该问题?我是Go编程的新手,所以希望您将来提出改进此情况的建议。
这是我的代码段
func SearchCallback(w *http.ResponseWriter, req *http.Request) { api.Domain = "127.0.0.1" // search males searchQuery := `{ "query": { "term": {"content":"male"} } }` var response2 map[string]interface{} response2, err := core.SearchRequest(true, "people", "male", searchQuery, "") if err != nil { log.Fatalf("The search of males has failed:", err) } var values2 []interface{} for _, v := range response2.Hits.Hits { var value2 map[string]interface{} err := json.Unmarshal(v.Source, &value2) if err != nil { log.Fatalf("Failed to unmarshal, line 65", err) } values2 = append(values2, value2) } fmt.Println(values2) jsonV2, err := json.Marshal(values2) if err != nil { log.Fatalf("Failed marshalling: line 71", err) } fmt.Println(string(jsonV2)) }
LinearZoetro.. 5
Go没有隐式类型转换。由于您是编程的新手,这意味着在不明确声明希望将其视为此类的情况下,不能将一种类型视为另一种类型。一个int不是浮点数,一个浮点数不是一个切片,而bool则不是一个字符串。不幸的是,有时您可以使用类型转换来解决此问题,对于布尔值,您不能简单地使用类型转换。即string(bool)
不会编译。
有多种解决方法。一是更换true
与fmt.Sprintf("%t",true)
。这是更一般的情况,如果true
不是布尔变量,它将返回表示"true"
或"false"
依赖的字符串。它还可以很好地推广到其他类型,例如整数,fmt.Sprintf("%d",myInteger)
例如,将an转换int
为a string
。
但是...在这种情况下,由于该值始终为true,因此不需要,只需将其替换true
为即可"true"
。该字符串"%t"
返回将是字符串"true"
,所以没有必要去通过转换的麻烦。
Go没有隐式类型转换。由于您是编程的新手,这意味着在不明确声明希望将其视为此类的情况下,不能将一种类型视为另一种类型。一个int不是浮点数,一个浮点数不是一个切片,而bool则不是一个字符串。不幸的是,有时您可以使用类型转换来解决此问题,对于布尔值,您不能简单地使用类型转换。即string(bool)
不会编译。
有多种解决方法。一是更换true
与fmt.Sprintf("%t",true)
。这是更一般的情况,如果true
不是布尔变量,它将返回表示"true"
或"false"
依赖的字符串。它还可以很好地推广到其他类型,例如整数,fmt.Sprintf("%d",myInteger)
例如,将an转换int
为a string
。
但是...在这种情况下,由于该值始终为true,因此不需要,只需将其替换true
为即可"true"
。该字符串"%t"
返回将是字符串"true"
,所以没有必要去通过转换的麻烦。