github.com/EngineerKamesh/gofullstack@v0.0.0-20180609171605-d41341d7d4ee/volume2/section1/templatedemo/templatedemo.go (about)

     1  // Simple example of creating and using a template in Go
     2  package main
     3  
     4  import (
     5  	"html/template"
     6  	"log"
     7  	"net/http"
     8  )
     9  
    10  // Type representing a gopher
    11  type Gopher struct {
    12  	Name string
    13  }
    14  
    15  // Handler for the hello-gopher route
    16  func helloGopherHandler(w http.ResponseWriter, r *http.Request) {
    17  
    18  	var gophername string
    19  	gophername = r.URL.Query().Get("gophername")
    20  	if gophername == "" {
    21  		gophername = "Gopher"
    22  	}
    23  	gopher := Gopher{Name: gophername}
    24  	renderTemplate(w, "./templates/greeting.html", gopher)
    25  
    26  }
    27  
    28  // Template rendering function
    29  func renderTemplate(w http.ResponseWriter, templateFile string, templateData interface{}) {
    30  	t, err := template.ParseFiles(templateFile)
    31  	if err != nil {
    32  		log.Fatal("Error encountered while parsing the template: ", err)
    33  	}
    34  	t.Execute(w, templateData)
    35  }
    36  
    37  func main() {
    38  	http.HandleFunc("/hello-gopher", helloGopherHandler)
    39  	http.ListenAndServe(":8080", nil)
    40  }