Як з'єднати фрагмент рядків в одну струну?


129
package main

import (
"fmt"
"strings"
)

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

дає мені помилку:

prog.go: 10: не можна використовувати reg (type [3] string) як рядок type [] в аргументі до strings.Join

Чи є більш прямий / кращий спосіб, ніж циклічення та додавання до var?


2
Чому б просто не використовувати reg := []string {"a","b","c"}?
Шон М

Відповіді:


100

Назва вашого запитання:

Як з'єднати фрагмент рядків в одну струну?

але насправді regце не зріз, а масив довжиною три. [...]stringє просто синтаксичним цукром для (у даному випадку) [3]string.

Щоб отримати фактичний фрагмент, слід написати:

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

(Спробуйте: https://play.golang.org/p/vqU5VtDilJ .)

До речі, якщо вам дійсно потрібно об’єднати масив рядків в одну рядок, ви можете отримати фрагмент з масиву, додавши [:]так:

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

(Спробуйте: https://play.golang.org/p/zy8KyC8OTuJ .)


7
Будь ласка, вкажіть робочий код у самій відповіді, майданчик - це плюс, але недостатньо для прийнятної відповіді ;-). ТИ!
shadyyx

8
@shadyyx: я погоджуюся, що посилання на ігровий майданчик суворо доповнює; але я не впевнений, що, на вашу думку, бракує відповідної відповіді. Єдина помилка ОП була у рядку 10, і я надав виправлену версію цього рядка разом із поясненнями. (Ви припускаєте, що я мав би скопіювати всю його
прикладну

1
"спроба об'єднати фрагмент у рядок" Ваше рішення працює лише для фрагментів рядків замість загального типу фрагмента.
Стівен Руз


26

Це все ще актуально у 2018 році.

До струнного

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

Знову поверніться до фрагмента

import strings
fileSlice := strings.Split(stringFiles, ",")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.