2016-05-09 5 views
2

Es ist einfach, Vorlage ('tmplhtml' in meinem Fall) in 'go' zu os.Stdout auszuführen, aber wie man es schreibt eine Zeichenkette "Ausgabe", also kann ich später html html in mail senden mit "gopkg.in/gomail.v2"?go kann nicht Ausgabe (Typ Zeichenfolge) als Typ io.Writer in Argument zur Vorlage ausführen

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" 

Build-Fehler liest 'nicht ausgegeben (Typ string) als Typ io.Writer in Argument t.Execute verwenden können: string nicht implementiert io.Writer (fehlende Write-Methode)' Ich kann Writer Methode implementieren aber es soll integer zurück Write (p [] Byte) (n int, err Fehler)

Antwort

5

Sie müssen einen Puffer schreiben, wie folgt, da dies die Schnittstelle io.Writer implementiert. Sein im Allgemeinen eine Write-Methode fehlt, mit dem Sie Ihre eigenen bauen könnte, aber ein Puffer ist einfach:

buf := new(bytes.Buffer) 
t := template.Must(template.New("html table").Parse(tmplhtml)) 
err = t.Execute(buf, Files) 
+0

nicht buf (Typ * bytes.Buffer) als Typ string in Argument m.SetBody – irom

+4

einen Puffer verwenden ist leicht in eine Zeichenfolge umgewandelt, ich denke, es ist nur 'buf.String()' die Dokumente sind https://golang.org/pkg/bytes/#Buffer.String – miltonb

Verwandte Themen