2016-02-25 13 views
12

Sono novizio in golang. Non riesco a trovare alcun documento ufficiale mostra come unire più punture in stringa.
Quello che mi aspettavo:
Input: "chiave", "valore", "key2:", 100
uscita: "Chiave: Valore, key2: 100"Come unire più stringhe e int in una stringa singola in golang?

+2

Possibile duplicato di [Golang: formatta una stringa senza stampare?] (Http://stackoverflow.com/questions/11123865/golang-format-a-string-without-printing) – icza

risposta

23

Mi piace usa il metodo Sprintf di fmt per questo tipo di cose. Funziona come normale Printf in Go o C solo restituisce una stringa. Ecco un esempio;

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

docs andare per fmt.Sprintf

+0

l'ultimo è il numero int. Posso usare% d? –

+0

@RobertYiJiang sì, lo modificherò di fatto. Non ho capito che ho cambiato il tipo di input lì. – evanmcdonnal

8

È possibile utilizzare strings.Join, che è quasi 3 volte più veloce di fmt.Sprintf. Tuttavia può essere meno leggibile.

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

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

strings.Join vs fmt.Sprintf

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

Buffer

Se avete bisogno di unire un sacco di corde, mi piacerebbe prendere in considerazione utilizzando un buffer piuttosto che le soluzioni sopra menzionate.

+0

Bene, se usi strconv.Itoa puoi anche concatenare le stringhe con + –

+0

@ColinPitrat A causa di un problema sul compilatore go, strings.Join di 2 o 3 elementi usa +, ma sopra di esso crea una slice slice per una concatenazione più efficiente. Se hai più di due elementi da concatenare, ti consiglio vivamente di usare strings.Join. – basgys

Problemi correlati