Comment joindre une tranche de chaînes en une seule chaîne?


130
package main

import (
"fmt"
"strings"
)

func main() {
reg := [...]string {"a","b","c"}
fmt.Println(strings.Join(reg,","))
}

me donne une erreur de:

prog.go: 10: impossible d'utiliser reg (chaîne de type [3]) comme chaîne de type [] dans l'argument des chaînes.

Existe-t-il un moyen plus direct / meilleur que de boucler et d'ajouter à une variable?


2
Pourquoi ne pas simplement utiliser reg := []string {"a","b","c"}?
Sean M

Réponses:


101

Le titre de votre question est:

Comment joindre une tranche de chaînes en une seule chaîne?

mais en fait, ce regn'est pas une tranche, mais un tableau de longueur trois. [...]stringest juste du sucre syntaxique pour (dans ce cas) [3]string.

Pour obtenir une tranche réelle, vous devez écrire:

reg := []string {"a","b","c"}

(Essayez-le: https://play.golang.org/p/vqU5VtDilJ .)

Incidemment, si jamais vous avez vraiment besoin de joindre un tableau de chaînes en une seule chaîne, vous pouvez obtenir une tranche du tableau en ajoutant [:], comme ceci:

fmt.Println(strings.Join(reg[:], ","))

(Essayez-le: https://play.golang.org/p/zy8KyC8OTuJ .)


7
Veuillez fournir le code de travail dans la réponse elle-même, le terrain de jeu est un plus mais pas suffisant pour une réponse acceptable ;-). TY!
shadyyx

8
@shadyyx: Je suis d'accord que le lien du terrain de jeu est strictement complémentaire; mais je ne suis pas sûr de ce que vous pensez qu'il manque dans la réponse proprement dite. La seule erreur du PO était à la ligne 10, et j'ai fourni la version corrigée de cette ligne, accompagnée d'une explication. (Êtes-vous en train de suggérer que j'aurais dû copier l'intégralité de son programme d'exemple dans la réponse? Si oui, alors - je ne suis pas d'accord.)
ruakh

1
"essayer de joindre une tranche dans une chaîne" Votre solution ne fonctionne que pour les tranches de chaînes au lieu du type de tranche général.
Steven Roose


26

Cela est toujours d'actualité en 2018.

To String

import strings
stringFiles := strings.Join(fileSlice[:], ",")

De nouveau à Slice

import strings
fileSlice := strings.Split(stringFiles, ",")
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.