2016-02-25 3 views
12

Ich bin Neuling in Golang. Ich kann keine offiziellen Doc-Shows finden, wie man mehrere Stiche zu einer Schnur zusammenfügt.
Was ich erwarte:
Eingang: "Schlüssel", "Wert", "key2:" 100
Ausgang: "Schlüssel: Wert, key2: 100"Wie mehrere Strings und Int zu einer einzigen Zeichenfolge in Golang zusammenführen?

+2

Mögliches Duplikat von [Golang: formatiert einen String ohne zu drucken?] (Http://stackoverflow.com/questions/11123865/golang-format-a-string-without-printing) – icza

Antwort

23

Ich mag an Verwenden Sie die Sprintf Methode von fmt für diese Art von Sache. Es funktioniert wie normal Printf in Go oder C nur gibt es eine Zeichenfolge zurück. Hier ist ein Beispiel;

output := fmt.Sprintf("%s%s%s%d", "key:", "value", ", key2:", 100) 

Go-Dokumentation für fmt.Sprintf

+0

der letzte ist Int-Nummer. Kann ich% d verwenden? –

+0

@RobertYiJiang Yea, ich werde damit in der Tat bearbeiten. Habe nicht bemerkt, dass ich den Typ der Eingabe dort geändert habe. – evanmcdonnal

8

können Sie verwenden strings.Join, die fast 3x schneller als fmt.Sprintf ist. Es kann jedoch weniger lesbar sein.

output := strings.Join([]string{"key:", "value", ", key2:", strconv.Itoa(100)}, "") 

Siehe https://play.golang.org/p/AqiLz3oRVq

strings.Join vs fmt.Sprintf

BenchmarkFmt-4  2000000   685 ns/op 
BenchmarkJoins-4  5000000   244 ns/op 

Buffer

Wenn Sie eine Menge von Strings zusammenführen müssen, halte ich würde Verwenden eines Puffers anstelle der oben genannten Lösungen.

+0

Nun, wenn Sie strconv.Itoa dann können Sie auch Strings mit + –

+0

@ColinPitrat verketten Aufgrund eines Problems auf dem Sprung Compiler, strings.Join von 2 oder 3 Elemente verwenden +, aber darüber erstellt es eine Byte-Slice für eine effizientere Verkettung. Wenn Sie mehr als zwei Elemente verketten müssen, empfehle ich dringend, strings.Join zu verwenden. – basgys

Verwandte Themen