我正在用 Go 编写一个 Web 应用程序,以便更好地使用它。我的用例非常简单。我想要一个通用函数,它将为每个请求执行,并根据用户状态生成导航栏。
init 方法看起来像(也会让你了解我的处理程序方法的实现):
func init() {
initDB()
gob.Register(user.User{})
r := mux.NewRouter()
r.HandleFunc("/", handleHome)
http.Handle("/", r)
}
我正在使用以下方法来执行模板。
func executeTemplate(w http.ResponseWriter, name string, status int, data map[string]interface{}) error {
w.Header().Set("Content-Type", "text/html; charset=utf-8")
w.WriteHeader(status)
data["User"] = getUser(r)
return tpls[name].ExecuteTemplate(w, "base", data)
}
我正在使用 Gorilla 工具包来存储会话,但据我所知,我每次都需要 http.Request 实例来访问 cookie 存储。现在我不想更改 executeTemplate 方法的签名。有什么方法可以添加一个函数来生成导航栏,而无需更改任何现有方法的签名?
有什么好的方法可以做到(即使改变现有方法)?
HUH函数
相关分类