Bir dizi dize nasıl tek bir dizede birleştirilir?


130
package main

import (
"fmt"
"strings"
)

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

bana şu hata veriyor:

prog.go: 10: dizelerin bağımsız değişkeninde tür [] dizesi olarak reg (tür [3] dizesi) kullanılamaz.

Döngü yapmaktan ve bir varlığa eklemekten daha doğrudan / daha iyi bir yol var mı?


2
Neden sadece kullanmıyorsun reg := []string {"a","b","c"}?
Sean M

Yanıtlar:


101

Sorunuzun başlığı:

Bir dizi dize nasıl tek bir dizede birleştirilir?

ama aslında, regbir değil, bir dilim, ancak uzunluk üç dizi. [...]stringsadece sözdizimsel şekerdir (bu durumda)[3]string .

Gerçek bir dilim elde etmek için şunu yazmalısınız:

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

(Deneyin: https://play.golang.org/p/vqU5VtDilJ .)

Bu arada, gerçekten bir dizi dizgiyi tek bir dizede birleştirmeniz gerekirse [:], aşağıdaki gibi ekleyerek diziden bir dilim elde edebilirsiniz :

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

(Deneyin: https://play.golang.org/p/zy8KyC8OTuJ .)


7
Pls, çalışma kodunu cevabın kendisinde sağlayın, oyun alanı bir artıdır, ancak kabul edilebilir cevap için yeterli değildir ;-). TY!
shadyyx

8
@shadyyx: Oyun alanı bağlantısının kesinlikle tamamlayıcı olduğunu kabul ediyorum; ama doğru cevapta neyin eksik olduğunu düşündüğünüzden emin değilim. OP'nin tek hatası 10. satırdaydı ve ben bu satırın düzeltilmiş versiyonunu açıklamayla birlikte verdim. (Onun / örnek programının tamamını cevaba kopyalamamı mı öneriyorsunuz? Öyleyse, o zaman - katılmıyorum.)
ruakh

1
"bir dilimi bir dizeye birleştirmeye çalışıyor" Çözümünüz genel dilim türü yerine yalnızca dize dilimleri için çalışıyor .
Steven Roose


26

Bu 2018'de hala geçerli.

Dize

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

Tekrar Slice'a dön

import strings
fileSlice := strings.Split(stringFiles, ",")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.