当前位置: 首页 > 面试题库 >

如何在Golang中将模板输出写入文件?

姜博
2023-03-14
问题内容

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

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"


 类似资料:
  • 问题内容: 我正在尝试运行shell命令,捕获stdout并将该输出写入文件。但是,我似乎缺少了一些步骤,因为当程序存在时,我要写入的文件为空。如何捕获命令的标准输出并将其写入文件? 问题答案: 您需要冲洗编写器。添加以下内容:

  • 我想有一个字符串的freemarker模板输出。我有一个freemarker模板文件commonTemplate。ftl。 Java代码填充模型并将输出打印到控制台App.java. 它适用于控制台输出。

  • 输出。 我想写的输出文件与inputfile完全相似,但顺序不是问题。我怎样才能做到,请帮帮我。

  • 问题内容: 我在golang中有一个模板,其中有一个看起来像这样的字符串: 我期望输出是这样的: 但是我看到的是这样的: 我还尝试插入一些JSON,但golang会转义字符并在不应该出现的地方添加类似内容。 如何在golang中插入HTML模板而不发生这种情况? 问题答案: 您应该将变量作为a 而不是作为a 传递: https://play.golang.org/p/QKKpQJ7gIs 如您所见

  • 问题内容: 我已尝试使用此代码建议(http://www.daniweb.com/forums/thread23883.html#)将控制台输出写入txt文件,但未成功。怎么了? 问题答案: 你需要执行以下操作: 第二句话是关键。它将假定的“最终” 属性的值更改为提供的值。 可以使用类似的方法(和)来更改标准输入和错误流。有关详细信息,请参考。 上面的一个更通用的版本是这样的: 如果为is ,则流

  • 问题内容: 在我的机器上,我有一些软件可以在终端中接收命令并返回值列表。 要运行它,我必须输入以下内容: 我正在尝试将其作为python程序的一部分运行。当我运行以下命令时: 然后我得到想要返回到终端的值(其中epoch_name是文件名的变量名)。但是,当我尝试将结果写入文件时: 产生了文件123.txt,但它为空。 我知道我放错了“和/或’字符,但是我不知道它们应该去哪里。 任何帮助将不胜感激