Jak połączyć kawałek strun w jeden ciąg?


129
package main

import (
"fmt"
"strings"
)

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

daje mi błąd:

prog.go: 10: nie można użyć reg (typ [3] string) jako typu [] string w argumencie do strings.Join

Czy jest bardziej bezpośredni / lepszy sposób niż zapętlanie i dodawanie do zmiennej?


2
Dlaczego po prostu nie użyć reg := []string {"a","b","c"}?
Sean M

Odpowiedzi:


100

Tytuł Twojego pytania to:

Jak połączyć kawałek strun w jeden ciąg?

lecz w rzeczywistości regto nie plaster, ale długość trzy tablicą. [...]stringjest po prostu cukrem syntaktycznym (w tym przypadku) [3]string.

Aby uzyskać rzeczywisty kawałek, powinieneś napisać:

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

(Wypróbuj: https://play.golang.org/p/vqU5VtDilJ .)

Nawiasem mówiąc, jeśli kiedykolwiek naprawdę będziesz musiał połączyć tablicę ciągów w jeden ciąg, możesz uzyskać wycinek z tablicy, dodając [:], na przykład:

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

(Wypróbuj: https://play.golang.org/p/zy8KyC8OTuJ .)


7
Pls, podaj działający kod w samej odpowiedzi, plac zabaw to plus, ale to za mało, aby odpowiedzieć ;-). TY!
shadyyx

8
@shadyyx: Zgadzam się, że link do placu zabaw ma charakter wyłącznie uzupełniający; ale nie jestem pewien, czego Twoim zdaniem brakuje w właściwej odpowiedzi. Jedyny błąd PO wystąpił w linii 10 i dostarczyłem poprawioną wersję tej linii wraz z wyjaśnieniem. (Czy sugerujesz, że powinienem był skopiować jego / jej cały przykładowy program do odpowiedzi? Jeśli tak, to - nie zgadzam się.)
ruakh

1
„próbuje połączyć plasterek w łańcuch” Twoje rozwiązanie działa tylko dla kawałków łańcuchów zamiast ogólnego typu plasterków.
Steven Roose


26

Jest to nadal aktualne w 2018 roku.

Do sznurka

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

Wróćmy do Slice ponownie

import strings
fileSlice := strings.Split(stringFiles, ",")
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.