web-dev-qa-db-fra.com

Comment fusionner plusieurs chaînes et int dans une seule chaîne

Je suis un débutant dans Go. Je ne trouve aucun document officiel montrant comment fusionner plusieurs chaînes en une nouvelle chaîne.

Ce à quoi je m'attends:

Entrée: "key:", "value", ", key2:", 100

Sortie: "Key:value, key2:100"

Je veux utiliser + pour fusionner des chaînes comme dans Java et Swift si possible).

32
Yi Jiang

J'aime utiliser la méthode Sprintf de fmt pour ce genre de chose. Cela fonctionne comme la normale Printf dans Go ou C seulement, il retourne une chaîne. Voici un exemple.

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

Aller docs pour fmt.Sprintf

59
evanmcdonnal

Vous pouvez utiliser strings.Join, qui est presque 3 fois plus rapide que fmt.Sprintf. Cependant, il peut être moins lisible.

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

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

strings.Join vs fmt.Sprintf

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

Tampon

Si vous devez fusionner un grand nombre de chaînes, utilisez plutôt un tampon que les solutions mentionnées ci-dessus.

18
basgys