wake-up-neo.net

Wie füge ich ein Stück Saiten zu einer einzigen Saite zusammen?

package main

import (
"fmt"
"strings"
)

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

gibt mir einen Fehler von:

prog.go: 10: reg (Typ [3] Zeichenfolge) kann nicht als Typ [] Zeichenfolge im Argument für strings.Join verwendet werden

Gibt es eine direktere/bessere Möglichkeit, als eine Schleife zu erstellen und eine Variable hinzuzufügen?

93
cycle4passion

Der Titel Ihrer Frage lautet:

Wie füge ich ein Stück Saiten zu einer einzigen Saite zusammen?

tatsächlich ist reg not ein Slice, aber ein Array der Länge drei. [...]string Ist nur syntaktischer Zucker für (in diesem Fall) [3]string.

Um eine tatsächliche Scheibe zu erhalten, sollten Sie schreiben:

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

(Probieren Sie es aus: https://play.golang.org/p/vqU5VtDilJ .)

Übrigens, wenn Sie jemals wirklich ein Array von Strings zu einem einzigen String zusammenfügen müssen, können Sie ein Slice aus dem Array abrufen, indem Sie [:] Wie folgt hinzufügen:

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

(Probieren Sie es aus: https://play.golang.org/p/zy8KyC8OTuJ .)

42
ruakh

Verwenden Sie eine Scheibe, kein Array. Erstellen Sie es einfach mit

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

Eine Alternative wäre gewesen, Ihr Array beim Beitritt in einen Slice umzuwandeln:

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

Lesen Sie das Go-Blog über die Unterschiede zwischen Slices und Arrays .

101
Denys Séguret

Dies gilt auch für 2018.

Zu String

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

Zurück zu Slice

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