Go using mux Router - So übergeben Sie meine Datenbank an meine Handler

m Moment versuche ich, mit Go ein kleines Web-Projekt für die Datenverarbeitung auf dem Server zu erstelle

Ich versuche, meine Datenbankverbindung an meine HandlerFunc (s) zu übergeben, aber es funktioniert nicht wie erwartet. Ich bin ziemlich neu in Golang, also habe ich vielleicht einige Grundprinzipien dieser Sprache nicht verstanden.

Meine Hauptfunktion sieht so aus:

func main() {

    db, err := config.NewDB("username:password@/databasename?charset=utf8&parseTime=True")
    if err != nil {
        log.Panic(err)
    }   
    env := &config.Env{DB: db} 

    router := NewRouter(env)
    log.Fatal(http.ListenAndServe(":8080", router))
}

Mein Router:

func NewRouter(env *config.Env) *mux.Router {
    router := mux.NewRouter().StrictSlash(true)
    for _, route := range routes {
        var handler http.Handler

        handler = route.HandlerFunc
        handler = Logger(handler, route.Name)

        router.
            Methods(route.Method).
            Path(route.Pattern).
            Name(route.Name).
            Handler(handler)
    }   
    return router
}

und meine Routen:

type Route struct {
    Name        string
    Method      string
    Pattern     string
    HandlerFunc http.HandlerFunc
}

type Routes []Route

var routes = Routes{
    Route{
        "Index",
        "GET",
        "/",
        controller.Index,
    },  
    Route{
        "Show",
        "GET",
        "/todos/{todoId}",
        controller.TodoShow,
    },  
    Route{
        "Create",
        "POST",
        "/todos",
        controller.TodoCreate,
    },  
}

So - wie kann ich mein "env" (oder env.DB) an meine FuncHandler übergeben? Ich habe viele Dinge ausprobiert, aber keine hat funktioniert.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage