在字符串中允许多个参数[Go]

时间:2016-04-10 17:15:10

标签: go

我正在使用Gomail从表单中获取数据并通过电子邮件发送给自己。如果我想获得用户的全名,我就会使用:

m.SetBody("text/html", fmt.Sprintf("<b>Full Name</b>: %s", msg.completeName))

电子邮件中的内容如下:

姓名:John Michael Smith

现在,如果我想在代码中添加消息字段

m.SetBody("text/html", fmt.Sprintf("<b>Full Name</b>: %s", msg.completeName, "<br> <b>Message</b> %s", msg.Content))

输出:

姓名:John Michael Smith%!(EXTRA string =

消息:%s,字符串=你好!。)

我希望它看起来像这样:

姓名:John Michael Smith

消息:您好!

1 个答案:

答案 0 :(得分:6)

问题是你以错误的方式使用Sprintf。

Sprintf需要一个字符串格式作为第一个参数,然后需要在最终字符串中插入所有变量。

因此你的代码应该是:

m.SetBody("text/html", fmt.Sprintf("<b>Full Name</b>: %s <br><b>Message</b> %s", msg.completeName, msg.Content))

有关更多信息,建议您阅读Sprintf documentation

注意:在评论中我说“为什么不连接字符串?”既然你也可以这样做:

m.SetBody("text/html", "<b>Full Name</b>: "+ msg.completeName +" <br><b>Message</b> " + msg.Content))