I'm having some issues with implementing a slight MVC design with 
gorilla/mux.

The layout of the modules is as follows:

main.go-- controllers---- base.controller.go---- example.controller.go-- 
models---- base.model.go---- example.controller.go

All the files in controllers is in the controllers package, same with models 
and 
then the main.go is the main package.

Currently I'm just trying to get the Base Controller to be able to be 
shared with the main package which is working, although it's throwing some 
errors when trying to implement routes. The build is not throwing any 
errors, but the routes are not available. If I implement the Walk function 
in the Gorilla/Mux documentation to print out all the registered routes for 
the mux.Router then it gives me this error:

&{%!!(MISSING)s(*mux.Router=&{ [0xc4200901b0] map[] true false false 
false}) %!!(MISSING)s(http.HandlerFunc=0xc8df0) 
[%!!(MISSING)s(*mux.routeRegexp=&{/ false false true false 0xc420095360 / 
[] []})] %!!(MISSING)s(*mux.routeRegexpGroup=&{ 0xc420016240 []}) 
%!!(MISSING)s(bool=true) %!!(MISSING)s(bool=false) 
%!!(MISSING)s(bool=false) %!!(MISSING)s(bool=false) 
%!!(MISSING)s(mux.BuildVarsFunc=)}

The reasoning for the global var V1Router *mux.Router is firstly to access 
it in the main package and also to create subrouters in the other 
controllers.

I am fairly new to Go, but I'm trying my best to learn the best practices! 
Any help would be greatly appreciated!

Example code below:


base.controllers.go

package controllers
import (
        "fmt"
        "bytes"
        "net/http"
        "github.com/gorilla/mux")
var V1Router *mux.Router

func init () {
    V1Router = mux.NewRouter()
    V1Router.StrictSlash(true)
    V1Router.HandleFunc("/", BaseHandler)    }
// Base route to access the API Documentation.
func BaseHandler (w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "Hello, Gophers!")}

main.go

package main
import (
    "net/http"
    "log"
    "github.com/projectrepo/project/models"
    "github.com/projectrepo/project/controllers"
    "github.com/gorilla/mux")

func main () {
    http.Handle("/v1", controllers.V1Router)
    if err := http.ListenAndServe(":8000", nil); err != nil {
        log.Fatal("Serving error.")
    }}

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to