Ce face string
string ține text ca o secvență de octeți nemodificabilă. Literalele între ghilimele ("...") acceptă secvențe ca \n, \t, \", iar cele între apostroafe inverse (`...`) sunt brute și pot avea mai multe rânduri. Fișierele sursă Go sunt UTF-8, deci textele cu diacritice funcționează direct. Valoarea zero este textul gol "".
Texte se lipesc cu + și se compară cu ==, <, > (ordine pe octeți). s[i] dă un octet, s[a:b] un subtext (care împarte memoria cu originalul), iar len(s) numărul de octeți. Pentru litere, folosește range sau []rune.
Prelucrările obișnuite sunt în pachetele strings (căutare, înlocuire, împărțire), strconv (conversii din și în numere), fmt (formatare) și unicode/utf8. Pentru a construi texte din multe bucăți, strings.Builder este mult mai rapid decât + repetat.
Exemple
Exemplul 1: Operații de bază
package main
import (
"fmt"
"strings"
)
func main() {
prenume, nume := "Ana", "Popescu"
complet := prenume + " " + nume
fmt.Println(complet, len(complet))
fmt.Println(complet == "Ana Popescu", "Arad" < "Brașov")
fmt.Println(complet[:3], strings.ToUpper(nume))
fmt.Println("Tab:\tgata\n\"între ghilimele\"")
fmt.Println(`brut: \n rămâne \n`)
}
Rezultat
Ana Popescu 11
true true
Ana POPESCU
Tab: gata
"între ghilimele"
brut: \n rămâne \n
Exemplul 2: Conversii între texte și numere
package main
import (
"fmt"
"strconv"
)
func main() {
n, err := strconv.Atoi("2026")
fmt.Println(n+1, err)
text := strconv.Itoa(42) + " lei"
fmt.Println(text)
fmt.Println(fmt.Sprintf("%.1f%%", 19.456))
fmt.Println(string(rune(259)), string([]byte{73, 97}))
}
Rezultat
2027 <nil>
42 lei
19.5%
ă Ia
Greșeli frecvente
s[0] = 'x': textele nu se modifică pe loc.+=într-o buclă cu mii de pași: fiecare pas copiază tot textul. Foloseștestrings.Builder.string(n)cun int: dă un caracter, nu cifre;go vetavertizeazăconversion from int to string yields a string of one rune, not a string of digits.
Comenzi înrudite
string-uri, rune și byte: Textul în Go este UTF-8: len dă octeți, range dă rune (caractere), byte este un octet, rune un caracter.tipuri de bază: Tipurile simple din Go: bool, string, întregi cu și fără semn, numere reale, complexe, byte și rune.len și cap: len dă numărul de elemente (sau octeți la texte); cap dă capacitatea unui slice, array sau canal.