使用模板響應 HTTP 請求
可以使用 Go 中的模板將響應寫入 http.ResponseWriter。如果你希望建立動態頁面,這將被證明是一個方便的工具。
(要了解模板如何在 Go 中執行,請訪問 Go 模板文件頁面。)
繼續使用 html/template 響應 HTTP 請求的簡單示例:
package main
import(
    "html/template"
    "net/http"
    "log"
)
func main(){
    http.HandleFunc("/",WelcomeHandler)
    http.ListenAndServe(":8080",nil)
}
type User struct{
    Name string
    nationality string //unexported field.
}
func check(err error){
    if err != nil{
        log.Fatal(err)
    }
}
func WelcomeHandler(w http.ResponseWriter, r *http.Request){
    if r.Method == "GET"{
        t,err := template.ParseFiles("welcomeform.html")
        check(err)
        t.Execute(w,nil)
    }else{
        r.ParseForm()
        myUser := User{}
        myUser.Name = r.Form.Get("entered_name")
        myUser.nationality = r.Form.Get("entered_nationality")
        t, err := template.ParseFiles("welcomeresponse.html")
        check(err)
        t.Execute(w,myUser)
    }
}
凡,內容
- welcomeform.html是:
<head>
    <title> Help us greet you </title>
</head>
<body>
    <form method="POST" action="/">
        Enter Name: <input type="text" name="entered_name">
        Enter Nationality: <input type="text" name="entered_nationality">
        <input type="submit" value="Greet me!">
    </form>
</body>
- welcomeresponse.html是:
<head>
    <title> Greetings, {{.Name}} </title>
</head>
<body>
    Greetings, {{.Name}}.<br>
    We know you are a {{.nationality}}!
</body>
注意:
- 
確保 .html檔案位於正確的目錄中。
- 
啟動伺服器後可以訪問 http://localhost:8080/。
- 
在提交表單後可以看到,結構的未匯出的國籍欄位無法按預期由模板包解析。