【发布时间】:2020-05-19 00:20:41
【问题描述】:
我对 golang 还很陌生,在其中一个处理函数中,我使用来自不同 goroutine 的通道收集数据,现在想将结果数组作为响应对象返回
所以我给出了一个返回类型作为结构详细信息,但它抛出了一个错误
如果这不是将结构切片作为响应返回的方式,那么我如何返回我的结果数组作为响应以发布我的请求
错误:
cannot use homePage (type func(http.ResponseWriter, *http.Request) []details) as type func(http.ResponseWriter, *http.Request) in argument to http.HandleFunc
处理函数:
func homePage(w http.ResponseWriter, r *http.Request) []details{
var wg sync.WaitGroup
for _, url := range urls {
out, err := json.Marshal(url)
if err != nil {
panic (err)
}
wg.Add(1)
go do_calc(ch,client,string(out),&wg)
}
fmt.Println("Returning Response")
go func() {
for v := range ch {
results = append(results, v)
}
}()
wg.Wait()
close(ch)
return results
}
【问题讨论】:
-
http.HandleFunc不期望任何返回值,错误的原因是您的[]details。你可以在这里看到它的文档:golang.org/pkg/net/http/#HandleFunc -
即使我删除了返回值 [details] 它也会抛出错误太多参数返回有([]details)