title: function in map is <nil>
body: <p>I am trying to build a simple router in Go, I have a get method on a struct that should be passing a callback to the Get route map with the url as the key, it seems that <code>fmt.Println(urlCallback)</code> is returning a nil value and causes a runtime panic if i tried to call it, coming from a javascript background I am only just coming to grips with pointers and the like and feel it may have something to do with this,if someone could tell me why the passed func is nil that would be great.</p>
  
  <p>Here is my "Router" package.</p>
  
  <pre><code>package Router
  
  import (
      "fmt"
      "net/http"
      "net/url"
      "log"
  )
  
  type Res http.ResponseWriter
  type Req *http.Request
  
  type RouteMap map[*url.URL]func(Res, Req) 
  type MethodMap map[string]RouteMap
  
  type Router struct {
      Methods MethodMap
  }
  
  func (router *Router) Get(urlString string, callback func(Res, Req)) {
      parsedUrl, err := url.Parse(urlString)
  
      if(err != nil) {
          panic(err)
      }
  
      fmt.Println(parsedUrl)
  
      router.Methods["GET"][parsedUrl] = callback
  }
  
  func (router *Router) initMaps() {
      router.Methods = MethodMap{}
      router.Methods["GET"] = RouteMap{}
  }
  
  func (router Router) determineHandler(res http.ResponseWriter, req *http.Request) {
      fmt.Println(req.URL)
      fmt.Println(req.Method)
  
      methodMap := router.Methods[req.Method]
      urlCallback := methodMap[req.URL]
  
      fmt.Println(methodMap)
      fmt.Println(urlCallback)
  }
  
  func (router Router) Serve(host string, port string) {
      fullHost := host + ":" + port
  
      fmt.Println("Router is now serving to:" + fullHost)
      http.HandleFunc("/", router.determineHandler)
  
      err := http.ListenAndServe(fullHost, nil)
  
      if err == nil {
          fmt.Println("Router is now serving to:" + fullHost)
      } else {
          fmt.Println("An error occurred")
          log.Fatal(err)
      }
  }
  
  
  func NewRouter() Router {
      newRouter := Router{}
      newRouter.initMaps()
  
      return newRouter
  }
  </code></pre>
  
  <p>and my main.</p>
  
  <pre><code>package main
  
  import (
      "./router"
      "fmt"
  )
  
  func main() {
      router := Router.NewRouter()
  
      router.Get("/test", func(Router.Res, Router.Req) {
          fmt.Println("In test woohooo!")
      })
  
      router.Serve("localhost", "8888")
  }
  </code></pre>