如何解决如何在Golang中将模板输出写入文件??
使用数组作为第二个参数,而不是模板本身。
package main
import (
"html/template"
"log"
"os"
)
func main() {
t := template.Must(template.New("").Parse(`{{- range .}}{{.}}:
echo "from {{.}}"
{{end}}
`))
t.Execute(os.Stdout, []string{"app1", "app2", "app3"})
f, err := os.Create("./myfile")
if err != nil {
log.Println("create file: ", err)
return
}
err = t.Execute(f, []string{"app1", "app2", "app3"})
if err != nil {
log.Print("execute: ", err)
return
}
f.Close()
}
app1:
echo "from app1"
app2:
echo "from app2"
app3:
echo "from app3"
myfile
app1:
echo "from app1"
app2:
echo "from app2"
app3:
echo "from app3"
解决方法
package main
import (
"html/template"
"log"
"os"
)
func main() {
t := template.Must(template.New("").Parse(`{{- range .}}{{.}}:
echo "from {{.}}"
{{end}}
`))
t.Execute(os.Stdout,[]string{"app1","app2","app3"})
f,err := os.Create("./myfile")
if err != nil {
log.Println("create file: ",err)
return
}
err = t.Execute(f,t)
if err != nil {
log.Print("execute: ",err)
return
}
f.Close()
}
execute: template: :1:10: executing "" at <.>: range can't iterate over {0xc00000e520 0xc00001e400 0xc0000b3000 0xc00009e0a2}