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.