如何在 Go 上通过一个客户端准备两个 HTTP 请求而不会出现内存问题?
我有下一个代码:
func moduleView(url string) {
var module Module
httpClient := &http.Client{}
moduleId, listHttpResponseCode := findEntity(httpClient, url)
request, _ := http.NewRequest("GET", fmt.Sprintf("%s/api/getById/%s", coreURL, module.ID), nil)
response, _ := httpClient.Do(request)
statusOK := response.StatusCode >= 200 && response.StatusCode < 300
if !statusOK {
fmt.Println("Unable to get by name module: ", response.Status)
} else {
responseBody, _ := ioutil.ReadAll(response.Body)
json.Unmarshal([]byte(strings.TrimSuffix(string(responseBody), "\n")), &module)
fmt.Printf(module)
}
return nil
}
func findEntity(httpClient *http.Client, url string) int {
var module Module
request, _ := http.NewRequest("GET", fmt.Sprintf("%s/api/getByName", url), nil)
response, _ := httpClient.Do(request)
responseBody, _ := ioutil.ReadAll(response.Body)
json.Unmarshal([]byte(strings.TrimSuffix(string(responseBody), "\n")), &module)
statusOK := response.StatusCode >= 200 && response.StatusCode < 300
if !statusOK {
return Module{}, response.StatusCode
}
return module, response.StatusCode
}
两个请求都有效,如果单独使用没有错误。但是,如果尝试同时使用它们(从一个获取 ID,然后在另一个上处理此数据请求),我会遇到内存错误
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x38 pc=0x1334022]
请提供有关使用一个 httpClient 处理两个请求的正确性的想法?谢谢