Ir usando mux Router - Cómo pasar mi DB a mis controladores

En este momento, trato de crear un pequeño proyecto web usando Go para el manejo de datos en el servidor.

Intento pasar mi conexión de base de datos a mis HandlerFunc (opciones) pero no funciona como se esperaba. Soy bastante nuevo en Golang, así que tal vez no entendí algunos principios básicos de este idioma.

Mi función principal se ve así:

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

Mi enrutador:

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
}

y mis rutas:

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

Entonces, ¿cómo puedo pasar mi "env" (o env.DB) a mis FuncHandlers? Intenté muchas cosas, pero ninguna funcionó.

Respuestas a la pregunta(2)

Su respuesta a la pregunta