web-dev-qa-db-ja.com

文字列のスライスを単一の文字列に結合する方法は?

package main

import (
"fmt"
"strings"
)

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

次のエラーが表示されます:

prog.go:10:文字列への引数で型[] stringとしてreg(型[3] string)を使用できません。

ループして変数に追加するよりも直接/より良い方法はありますか?

85
cycle4passion

質問のタイトルは次のとおりです。

文字列のスライスを単一の文字列に結合する方法は?

しかし、実際、regnotスライスではなく、長さ3の配列です。 [...]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 。)

30
ruakh

アレーではなくスライスを使用します。を使用して作成するだけです

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

別の方法は、結合時に配列をスライスに変換することです。

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

スライスと配列の違いについてのGoブログ を読んでください。

101
Denys Séguret

これは、2018年でも引き続き関連しています。

文字列へ

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

再びスライスに戻る

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