Vá usando o mux Router - Como passar meu banco de dados para meus manipuladores

No momento, tento criar um pequeno projeto da Web usando Go para manipulação de dados no servidor.

Tento passar minha conexão com o banco de dados para minhas HandlerFunc (tions), mas não funciona conforme o esperado. Eu sou muito novo no golang, então talvez eu não tenha entendido alguns princípios básicos desse idioma.

Minha principal função é assim:

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))
}

Meu roteador:

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
}

e minhas rotas:

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,
    },  
}

Então - como posso passar meu "env" (ou env.DB) para meus FuncHandlers? Eu tentei muitas coisas, mas nenhuma delas funcionou.

questionAnswers(2)

yourAnswerToTheQuestion