这段代码 为什么没有返回为空 func callAPI(id string, commpy string) (*Logistics, error) { host := "https://kuaidi100.market.alicloudapi.com" path := "/getExpress" method := "GET" appcode := "8154b6dbb38441edba47bf2ce871289e" querys := "NO=" + id + "&TYPE=" + commpy urls := host + path + "?" + querys req, err := http.NewRequest(method, urls, nil) if err != nil { fmt.Println(err) return nil, nil } req.Header.Add("Authorization", "APPCODE "+appcode) res, err := http.DefaultClient.Do(req) //println(res, err) if err != nil { fmt.Println(err) return nil, nil } defer res.Body.Close() _, err = io.ReadAll(res.Body) if err != nil { fmt.Println(err) return nil, nil } var logist Logistics if err := json.NewDecoder(res.Body).Decode(&logist); err != nil { return nil, fmt.Errorf("error decoding logistics info from API response: %v", err) } return &logist, nil }
时间: 2024-03-28 12:38:53 浏览: 91
这段代码中的函数 `callAPI()` 在正常情况下是可以返回值的。它是一个 GET 请求的 API 调用函数,根据传入的参数 id 和 commpy 构造请求 API 的 URL,然后发送请求并获取返回的 JSON 数据,最后将获取到的 JSON 数据解码为一个 Logistics 结构体并返回。
在函数中,如果出现了错误,比如构造请求时出现了错误或者获取数据时出现了错误,函数会打印错误信息并返回 nil,error 类型的值。但是,由于在出现错误时返回了 nil,因此在函数调用的地方需要对返回值进行判断,以避免出现空指针异常。
阅读全文