title: Go http panic serving
body: <p>I got this panic: </p>
  
  <pre><code>C:\Users\loow\Desktop\USBWebserver v8.5\duplicate_submissions&gt;go run server.go
  2015/10/23 13:00:39 http: panic serving [::1]:63867: runtime error: invalid memo
  ry address or nil pointer dereference
  goroutine 5 [running]:
  net/http.(*conn).serve.func1(0xc0820a1810, 0x3b55b8, 0xc082024040)
          c:/go/src/net/http/server.go:1287 +0xbc
  main.login(0x2990058, 0xc0820d4000, 0xc0820be1c0)
          C:/Users/loow/Desktop/USBWebserver v8.5/duplicate_submissions/server.go:
  27 +0x5a5
  net/http.HandlerFunc.ServeHTTP(0x8326a8, 0x2990058, 0xc0820d4000, 0xc0820be1c0)
          c:/go/src/net/http/server.go:1422 +0x41
  net/http.(*ServeMux).ServeHTTP(0xc082062360, 0x2990058, 0xc0820d4000, 0xc0820be1
  c0)
          c:/go/src/net/http/server.go:1699 +0x184
  net/http.serverHandler.ServeHTTP(0xc08200c360, 0x2990058, 0xc0820d4000, 0xc0820b
  e1c0)
          c:/go/src/net/http/server.go:1862 +0x1a5
  net/http.(*conn).serve(0xc0820a1810)
          c:/go/src/net/http/server.go:1361 +0xbf5
  created by net/http.(*Server).Serve
          c:/go/src/net/http/server.go:1910 +0x3fd
  2015/10/23 13:00:39 http: panic serving [::1]:63868: runtime error: invalid memo
  ry address or nil pointer dereference
  goroutine 33 [running]:
  net/http.(*conn).serve.func1(0xc082114000, 0x3b55b8, 0xc082112000)
          c:/go/src/net/http/server.go:1287 +0xbc
  main.login(0x2990058, 0xc0821140b0, 0xc0821200e0)
          C:/Users/loow/Desktop/USBWebserver v8.5/duplicate_submissions/server.go:
  27 +0x5a5
  net/http.HandlerFunc.ServeHTTP(0x8326a8, 0x2990058, 0xc0821140b0, 0xc0821200e0)
          c:/go/src/net/http/server.go:1422 +0x41
  net/http.(*ServeMux).ServeHTTP(0xc082062360, 0x2990058, 0xc0821140b0, 0xc0821200
  e0)
          c:/go/src/net/http/server.go:1699 +0x184
  net/http.serverHandler.ServeHTTP(0xc08200c360, 0x2990058, 0xc0821140b0, 0xc08212
  00e0)
          c:/go/src/net/http/server.go:1862 +0x1a5
  net/http.(*conn).serve(0xc082114000)
          c:/go/src/net/http/server.go:1361 +0xbf5
  created by net/http.(*Server).Serve
          c:/go/src/net/http/server.go:1910 +0x3fd
  exit status 2
  </code></pre>
  
  <p>Whit this code: </p>
  
  <pre><code>package main
  
  import(
      "fmt"
      "net/http"
      "html/template"
      "log"
      "time"
      "crypto/md5"
      "io"
      "strconv"
  )
  
  func loginForm(w http.ResponseWriter, r *http.Request){
  
  }
  
  func login(w http.ResponseWriter, r *http.Request){
      fmt.Println(r.Method)
      if r.Method == "GET"{
          cruTime := time.Now().Unix()
          h := md5.New()
          io.WriteString(h,strconv.FormatInt(cruTime,10))
          token := fmt.Sprintf("%x", h.Sum(nil))
          fmt.Println(token)
          t, err := template.ParseFiles("templates/index.gtpl")
          fmt.Println(err.Error())
          err = t.Execute(w, token)
          fmt.Println(err.Error())
      } else{
          r.ParseForm()
          token := r.Form.Get("token")
          if token != ""{
              fmt.Println(token)
          } else{
              fmt.Println("There is no token")
          }
          fmt.Println("username length: ", len(r.Form["username"][0]))
          fmt.Println("username: ", template.HTMLEscapeString(r.Form.Get("username")))
          fmt.Println("password: ", template.HTMLEscapeString(r.Form.Get("password")))
          template.HTMLEscape(w, []byte(r.Form.Get("username")))
  
      }
  }
  
  func main(){
      http.HandleFunc("/", loginForm)
      http.HandleFunc("/login", login)
      err := http.ListenAndServe(":9090", nil)
      if err != nil {
          log.Fatal("ListenAndServe: ", err)
      }
  }
  </code></pre>
  
  <p>I cant fix it, I tried everything what I found in the stackoverflow. What is the problem? There is no error, and the panic said that the problem in t, err := template.ParseFiles("templates/index.gtpl")..</p>
  
  <p>There is the template file:</p>
  
  <pre><code>&lt;input type="checkbox" name="interest" value="football"&gt;Football
  &lt;input type="checkbox" name="interest" value="basketball"&gt;Basketball
  &lt;input type="checkbox" name="interest" value="tennis"&gt;Tennis
  Username: &lt;input type="text" name="username"&gt;
  Password: &lt;input type="password" name="password"&gt;
  &lt;input type="hidden" name="token" value="{{.}}"&gt;
  &lt;input type="submit" value="Login"&gt;
  </code></pre>