strings.Join în Go

Lipește textele dintr-un slice într-un singur text, cu un separator între ele.

Sintaxă
func Join(elems []string, sep string) string

Ce face strings.Join

strings.Join(elems, sep) este operația inversă lui Split: pune toate elementele din elems unul după altul, cu sep între ele (nu și la capete). Un slice gol dă textul gol.

Primește doar []string. Pentru numere, transformă-le întâi în text (cu strconv.Itoa sau fmt.Sprint). Pentru multe bucăți adăugate treptat, strings.Builder este alegerea potrivită.

Parametri

Parametru Descriere
elems Slice-ul de texte.
sep Separatorul dintre elemente (poate fi gol).

Ce returnează

Textul obținut.

Exemple

Exemplul 1: Listă de orașe

package main

import (
	"fmt"
	"strings"
)

func main() {
	orase := []string{"Iași", "Cluj", "Timișoara"}
	fmt.Println(strings.Join(orase, ", "))
	fmt.Println(strings.Join(orase, " -> "))
	fmt.Println(strings.Join(orase, ""))
	fmt.Printf("%q\n", strings.Join([]string{}, ", "))
}

Rezultat

Iași, Cluj, Timișoara
Iași -> Cluj -> Timișoara
IașiClujTimișoara
""

Exemplul 2: Numere lipite într-un text

package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	note := []int{9, 10, 7}
	texte := make([]string, len(note))
	for i, n := range note {
		texte[i] = strconv.Itoa(n)
	}
	fmt.Println("Note: " + strings.Join(texte, " | "))
}

Rezultat

Note: 9 | 10 | 7

Greșeli frecvente

  • Dai un []int: nu compilează. Transformă numerele în texte întâi.
  • Construiești un text în buclă cu s += x + ", " și apoi tai ultima virgulă. Join pune separatorul doar între elemente.

Comenzi înrudite

  • strings.Split: Împarte textul în bucăți după un separator exact; SplitN limitează numărul de bucăți, SplitAfter păstrează separatorul.
  • strings.Builder: Construiește eficient un text din multe bucăți: adaugi cu WriteString, WriteByte, WriteRune sau Write și obții rezultatul cu String().
  • strings.Repeat: Returnează un text format din același text repetat de un număr de ori.
  • bytes.Split: Split împarte un []byte după un separator în mai multe slice-uri; Join le lipește la loc cu un separator.