好的,我有一个主包和一个 http 处理程序包。本质上,我要做的是设置一个全局结构,这样我就可以随时调用该结构中的信息。
下面是我尝试的示例的基本概述: 主包导入处理函数 主包调用 handlerfunc Handlerfunc 将 http.ResponseWriter 和其他项目设置为 UrlInfo struct Handlerfunc 运行传入函数(无需将 UrlStruct 传递给函数) 运行函数(本例中为 home)函数 home 可以随时调用变量 uinfo 导致其指针 UrlInfo 结构
显然这不起作用,但这本质上是我想做的,这样我就不必将所有这些信息传递到我的家庭功能中。保持干净和简单。
欢迎任何想法和想法。谢谢。
处理程序包
package handler
// Struct containing http requests and variables
type UrlInfo struct {
Res http.ResponseWriter
Req *http.Request
Item string
}
func HandleFunc(handlepath string, runfunc func()) {
// Set handler and setup struct
http.HandleFunc(handlepath, func(w http.ResponseWriter, r *http.Request) {
url := new(UrlInfo)
url.Res = w
url.Req = r
url.Item = "Item information"
runfunc()
})
}
主包
import "handler"
var uinfo = &handler.UrlInfo{}
func init() {
handler.HandleFunc("/home/", home)
}
func home() {
fmt.Println(uinfo.Item)
}