为了账号安全,请及时绑定邮箱和手机立即绑定

go 不能在模板 Execute 的参数中使用输出(类型字符串)作为类型 io.Writer

go 不能在模板 Execute 的参数中使用输出(类型字符串)作为类型 io.Writer

Go
临摹微笑 2022-01-10 14:39:10
在“go”到os.Stdout 中执行模板(在我的情况下为“tmplhtml”)很容易,但如何将其写入字符串“输出”,以便我以后可以使用"gopkg.in/gomail.v2"?发送邮件中的 html ?var output string    t := template.Must(template.New("html table").Parse(tmplhtml))    err = t.Execute(output, Files)m.SetBody("text/html", output) //"gopkg.in/gomail.v2"构建错误读取“不能在 t.Execute 的参数中使用输出(字符串类型)作为 io.Writer 类型:字符串没有实现 io.Writer(缺少写入方法)”我可以实现 Writer 方法,但它应该返回整数写入( p []byte) (n int, err 错误)
查看完整描述

2 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

您需要按如下方式写入缓冲区,因为它实现了接口io.Writer。它基本上缺少一个 Write 方法,您可以构建自己的方法,但缓冲区更直接:


buf := new(bytes.Buffer)

t := template.Must(template.New("html table").Parse(tmplhtml))

err = t.Execute(buf, Files)


查看完整回答
反对 回复 2022-01-10
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

您还可以使用strings.Builder:


package main


import (

   "strings"

   "text/template"

)


func main() {

   t, err := new(template.Template).Parse("hello {{.}}")

   if err != nil {

      panic(err)

   }

   b := new(strings.Builder)

   t.Execute(b, "world")

   println(b.String())

}


查看完整回答
反对 回复 2022-01-10
  • 2 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信