title: Cannot successfully implement http.Handler
body: <p>I'm trying to get the following code to compile. I cannot successfully implement my own template handler struct an it results in the following error upon build.</p>
  
  <p>Error: </p>
  
  <p>./main.go:28:46: cannot use templateHandler literal (type *templateHandler) as type http.Handler in argument to http.Handle:
      *templateHandler does not implement http.Handler (missing ServeHTTP method)</p>
  
  <pre><code>package main
  
  import (
      "html/template"
      "log"
      "net/http"
      "path/filepath"
      "sync"
  )
  
  // templ represents a single template
  
  type templateHandler struct {
      once     sync.Once
      filename string
      templ    *template.Template
  }
  
  // ServeHTTP handles the HTTP request.
  func (t *templateHandler) ServerHTTP(w http.ResponseWriter, r *http.Request) {
      t.once.Do(func() {
          t.templ = template.Must(template.ParseFiles(filepath.Join("templates", t.filename)))
  })
      t.templ.Execute(w, nil)
  }
  
  func main() {
      http.Handle("/", &amp;templateHandler{filename: "chat.html"})
      // Start Web Server
      if err := http.ListenAndServe(":8080", nil); err != nil {
          log.Fatal("ListenAndServe:", err)
      }
  }
  </code></pre>