http.Client 中设置的超时和请求上下文中设置的超时有什么区别?
我已经看到了 2 种在 http 客户端中设置超时的方法。
第一的:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
req, err := http.NewRequestWithContext(ctx, http.MethodGet, "http://localhost:8080", nil)
第二:
client := http.Client{
Timeout: 2 * time.Second,
}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
什么时候使用一个而不是另一个?