如何使template.Execute()写入文件而不是response.Writer?

时间:2018-12-13 07:58:34

标签: go go-templates

我有下面的代码来解析模板文件,并将解析后的html写入ResponseWriter:-

package main

import (
    "net/http"
    "html/template"
)

func handler(w http.ResponseWriter, r *http.Request) {
    t, _ := template.ParseFiles("view.html")
    t.Execute(w, "Hello World!")
}

func main() {
    server := http.Server{
        Addr: "127.0.0.1:8080",
    }
    http.HandleFunc("/view", handler)
    server.ListenAndServe()
}  

并且模板文件“ template.html”如下:

<html>
<head>
    <title>First Program</title>
</head>
<body>
    {{ . }}
</body>
</html>  

现在,我不想将已解析/执行的文件写入ResponseWriter,而是想将这些内容写入html文件,例如“ parsed.html”。我该如何实现。我是Go的新手,所以很难理解。谢谢。

1 个答案:

答案 0 :(得分:1)

这里是一种方法:

sp

Run it on the playground

关键点:* os.File和http.ResponseWriter都满足Execute的第一个参数中使用的io.Writer接口。