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ă.Joinpune 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.