メインパッケージとhttpハンドラーパッケージがあります。基本的に私がやろうとしているのは、グローバル構造体を設定して、いつでもその構造体の情報を呼び出すことができるようにすることです。
以下の私の試みた例の基本的な概要:メインパッケージはハンドラー関数をインポートしますメインパッケージはhandlerfuncを呼び出しますHandlerfuncはhttp.ResponseWriterと他のアイテムをUrlInfo構造体に設定します関数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)
}