2016-04-10 10 views
0

Ich benutze Gomail, um Daten von einem Formular zu greifen und es an mich selbst zu mailen. Wenn ich den Benutzer vollständigen Namen bekommen wollte, ist es das, was ich würde verwenden:Erlaube mehr als ein Argument in einer Zeichenkette [Gehe zu]

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

es so etwas wie dies in der E-Mail:

Vollständiger Name: John Michael Smith

Nun, wenn ich wollte ein Nachrichtenfeld, um den Code

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

Es gibt diese hinzuzufügen:

Vollständiger Name: John Michael Smith% (EXTRA string =

Nachricht:% s, string = Hallo zusammen !.)!

Ich will es so aussehen:

Vollständiger Name: John Michael Smith

Nachricht: Hallo!

+1

Warum verketten Sie nicht einfach die Zeichenfolgen? – FredMaggiowski

+0

@FredMaggiowski Können Sie mir ein Beispiel geben, wie ich das machen kann? Tut mir leid, ich bin ziemlich neu in Golang. – cmelone

Antwort

6

Das Problem ist, dass Sie Sprintf falsch verwenden.

Die Sprintf benötigt ein String-Format als erstes Argument und dann alle Variablen, die Sie in die endgültige Zeichenfolge einfügen müssen.

So sollte Ihr Code sein:

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

Für weitere Informationen empfehle ich Ihnen die Sprintf documentation

Hinweis zu lesen: Im Kommentar Ich sagte: „Warum Sie verketten nicht die Zeichenfolge? " seit du kannst auch tun:

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

Vielen Dank! Es hat perfekt funktioniert – cmelone

+1

Gern geschehen;) – FredMaggiowski

Verwandte Themen