在过去的几天里,我一直在阅读有关 Go 的内容,并且我不断回顾的一个概念是上下文。
我想我理解创建这样一个结构背后的动机。我不明白的是在传入 HTTP 请求中使用上下文时的特定用例。
假设我们有一个追随者httpHandlerFunc。在该处理程序内部,我们调用一个需要传递上下文的函数。我经常看到这个解决方案
func myHandler(w http.ResponseWriter, r *http.Request) {
ctx := context.WithValue(context.Background(), "request", r)
otherFunc(ctx)
}
我的问题是,为什么我们不直接从请求中传递上下文,就像这样
func myHandler(w http.ResponseWriter, r *http.Request) {
otherFunc(r.Context())
}
既然我们希望上下文流过我们的程序,那么传递请求的上下文不是更有意义吗?我认为创建后台上下文是我们只想在根父级中执行的操作,就像init()函数一样。
森林海
慕莱坞森
相关分类