请问 `http.ResponseWriter` 怎么替换成了 `io.Writer`
在旧代码中
// --- 4. 读取成功,显示文章 ---
// 4.0 设置模板相对路径
viewDir := "resources/views"
// 4.1 所有布局模板文件 Slice
files, err := filepath.Glob(viewDir + "/layouts/*.gohtml")
logger.LogError(err)
// 4.2 在 Slice 里新增我们的目标文件
newFiles := append(files, viewDir+"/articles/show.gohtml")
// 4.3 解析模板文件
tmpl, err := template.New("show.gohtml").
Funcs(template.FuncMap{
"RouteName2URL": route.Name2URL,
}).ParseFiles(newFiles...)
// 4.4 渲染模板,将所有文章的数据传输进去
tmpl.ExecuteTemplate(w, "app", article)
上面的w
是指http.ResponseWriter
的类型
在view.go
中变成了io.Writer
// Render 渲染视图
func Render(w io.Writer, name string, data interface{}) {
// 1 设置模板相对路径
viewDir := "resources/views/"
// 2. 语法糖,将 articles.show 更正为 articles/show
name = strings.Replace(name, ".", "/", -1)
// 3 所有布局模板文件 Slice
files, err := filepath.Glob(viewDir + "layouts/*.gohtml")
logger.LogError(err)
// 4 在 Slice 里新增我们的目标文件
newFiles := append(files, viewDir+name+".gohtml")
// 5 解析所有模板文件
tmpl, err := template.New(name + ".gohtml").
Funcs(template.FuncMap{
"RouteName2URL": route.Name2URL,
}).ParseFiles(newFiles...)
logger.LogError(err)
// 6 渲染模板
tmpl.ExecuteTemplate(w, "app", data)
}
请问这是为什么呢?