首页 > 解决方案 > 如何将模板输出写入 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, 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}

标签: templatesgogo-templates

解决方案


你给了一个错误的参数:

err = t.Execute(f, t)

它应该是

err = t.Execute(f,[]string{"app1", "app2", "app3"})

推荐阅读