¿Cómo unir una porción de cadenas en una sola cadena?


129
package main

import (
"fmt"
"strings"
)

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

me da un error de:

prog.go: 10: no se puede usar reg (cadena de tipo [3]) como cadena de tipo [] en el argumento de cadenas.

¿Hay una forma más directa / mejor que hacer un bucle y agregar a una var?


2
¿Por qué no solo usar reg := []string {"a","b","c"}?
Sean M

Respuestas:


100

El título de su pregunta es:

¿Cómo unir una porción de cadenas en una sola cadena?

pero, de hecho, noreg es un segmento, sino una matriz de longitud tres. es solo azúcar sintáctico para (en este caso) .[...]string[3]string

Para obtener una porción real, debe escribir:

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

(Pruébelo: https://play.golang.org/p/vqU5VtDilJ ).

Por cierto, si alguna vez realmente necesita unir una matriz de cadenas en una sola cadena, puede obtener una porción de la matriz agregando [:], de esta manera:

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

(Pruébelo: https://play.golang.org/p/zy8KyC8OTuJ ).


77
Por favor, proporcione el código de trabajo en la respuesta en sí, el patio de recreo es un plus pero no suficiente para una respuesta aceptable ;-). TY!
shadyyx

8
@shadyyx: estoy de acuerdo en que el enlace del área de juegos es estrictamente complementario; pero no estoy seguro de lo que crees que falta en la respuesta correcta. El único error del OP estaba en la línea 10, y proporcioné la versión corregida de esa línea, junto con la explicación. (¿Sugiere que debería haber copiado todo su programa de ejemplo en la respuesta? Si es así, entonces, no estoy de acuerdo.)
ruakh

1
"tratando de unir un corte en una cadena" Su solución solo funciona para cortes de cadenas en lugar del tipo de corte general.
Steven Roose


26

Esto sigue siendo relevante en 2018.

Encadenar

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

Volver a Slice nuevamente

import strings
fileSlice := strings.Split(stringFiles, ",")
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.