有如下代码:
req, _ := http.NewRequest("POST", "
http://example.com", nil)
req.Header.Set("Content-Type", "application/json")
追了一下 golang 源码 header 是 map[string][]string 类型,
set 方法的源码是:
func (h Header) Set(key, value string) {
textproto.MIMEHeader(h).Set(key, value)
}
看上去,在做 header set 的时候,golang 并没有做加锁解锁等操作。
我还去看了下 resty 请求库和 gorequest 请求库,发现实现方式和 go 原生的是一样的。
我的需求:要并发发起 http post 请求,每个请求需要设置不同的 auth header 头
我的疑问:
1 、在设置 header 的时候是否存在 map 并发读写的问题?
2 、在并发发起 http post 请求的时候,request 是共用一个,还是每次发起都 new 一个?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/943646
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.