http - Golang http.HandlerFunc 闭包初始化
问题描述
Matt Ryer 在他的演讲How I Write HTTP Web Services中提到了一些有趣的事情。他建议编写返回 handlerfunc 的 http 处理程序,如下所示:
func (s *server) handleSomething() http.HandlerFunc {
thing := prepareThing()
return func(w http.ResponseWriter, r *http.Request) {
// use thing
}
}
这允许您传递参数,或通过闭包在处理程序中使用服务器数据库连接,而无需使用全局变量。
我的问题是是否prepareThing()
在每个请求之后执行,或者在应用程序启动时执行。他提到在prepareThing()
关闭时加载模板或进行其他昂贵的设置。这是否意味着关闭仅在应用启动时执行?为什么是这样?
解决方案
推荐阅读
- c# - 异常 System.IO.FileNotFoundException:无法加载文件或程序集
- reactjs - 如何在 webpack5 的 NPM 启动上指定 PORT
- python - 对 python 代码进行故障排除以抓取和存储 PDF 文本
- python - penup() 第一次通过 for 循环
- javascript - VueJS3 + Typescript - 从输入文件中读取文件
- firebase - 无法从控制台创建 Firebase 云消息
- javascript - JSON Web 令牌 (JWT) 安全吗?
- python - 如何更改 python 文件单元格 VS Code 的背景?
- ios - 本机 iOS Unity 集成 - AppStore 配置文件导致找不到“UnityFramework/UnityFramework.h”文件
- r - 从 SF 数据框中排除外岛