gpt4 book ai didi

templates - 如何将模板输出写入 Golang 中的文件?

转载 作者:IT王子 更新时间:2023-10-29 01:48:31 26 4
gpt4 key购买 nike

我使用以下代码工作正常,但现在我想将模板打印到文件并尝试以下但出现错误

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}

最佳答案

使用数组作为第二个参数,而不是模板本身。

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"

关于templates - 如何将模板输出写入 Golang 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53461812/

26 4 0