web-dev-qa-db-fra.com

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

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: ne peut pas utiliser reg (chaîne de type [3]) comme chaîne de type [] dans l'argument de strings.Join

Existe-t-il un moyen plus direct/meilleur que de boucler et d’ajouter un var?

93
cycle4passion

Le titre de votre question est:

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

mais en fait, reg est non une tranche, mais un tableau de longueur trois. [...]string n'est qu'un 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 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 suit:

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

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

42
ruakh

Utilisez une tranche, pas un tableau. Il suffit de le créer en utilisant

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

Une alternative aurait été de convertir votre tableau en une tranche lors de la jointure:

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

Lire le blog Go sur les différences entre les tranches et les tableaux .

101
Denys Séguret

Ceci est toujours d'actualité en 2018.

Pour corder

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

Retour à Slice again

import strings
fileSlice := strings.Split(stringFiles, ",")
23
Edwinner