我有一个主要的包和一个HTTP处理程序包,两者都与IT技术有关。基本上,我想设置一个全局结构体,以便可以随时调用该结构体中的信息。
以下是我尝试的示例的基本概述: 主包导入处理程序功能 主包调用handlerfunc Handlerfunc将http.ResponseWriter和其他项目设置到UrlInfo结构中 Handlerfunc运行传递进来的函数(无需将UrlStruct传递到函数中) 运行函数(在此示例中为home) Home函数可以随时调用uinfo变量,因为它是指向UrlInfo结构的指针
显然,这并不起作用,但这基本上是我想要做的,这样我就不必将所有这些信息传递到我的home函数中。使其简洁明了。
欢迎提出任何想法和建议。谢谢。
处理程序包
主要包
以下是我尝试的示例的基本概述: 主包导入处理程序功能 主包调用handlerfunc Handlerfunc将http.ResponseWriter和其他项目设置到UrlInfo结构中 Handlerfunc运行传递进来的函数(无需将UrlStruct传递到函数中) 运行函数(在此示例中为home) Home函数可以随时调用uinfo变量,因为它是指向UrlInfo结构的指针
显然,这并不起作用,但这基本上是我想要做的,这样我就不必将所有这些信息传递到我的home函数中。使其简洁明了。
欢迎提出任何想法和建议。谢谢。
处理程序包
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)
}