Cum se pot lucra cu șirurile în limbajul Go?
sobes.tech AI
Răspuns de la AI
Șirurile în Go sunt secvențe imuabile de octeți. Ele pot reprezenta atât text UTF-8, cât și date binare arbitrare.
Principalele moduri de lucru:
-
Declarare și inițializare:
var s1 string // Șir gol s2 := "salut" // Inițializare cu literal de șir s3 := `multi-line șir` // Literal de șir brut -
Lungimea șirului:
len(s2) // Lungimea în octeți. Pentru "salut" va fi 6. -
Acces la octeți:
b := s2[0] // Obține octetul de la index. Returnează 's' (în UTF-8).Accesul direct la octeți nu garantează obținerea unui caracter UTF-8 complet.
-
Acces la rune (caractere UTF-8): Șirurile pot fi iterate pe rune:
for index, runeValue := range s2 { fmt.Printf("Index: %d, Runa: %c\n", index, runeValue) }Lungimea în rune:
utf8.RuneCountInString(s2) // Lungimea în rune. Pentru "salut" va fi 6. -
Concatenarea șirurilor:
str1 := "hello" str2 := " lume" result := str1 + str2 // Concatenare cu +Pentru concatenări eficiente ale multor șiruri, folosiți
strings.Builder.var sb strings.Builder sb.WriteString("hello") sb.WriteString(" ") sb.WriteString("lume") result := sb.String() // Obține șirul rezultat -
Conversia între șiruri și tăieturi de octeți/rune:
byteslice := []byte(s2) // Șir în tăietură de octeți rs := []rune(s2) // Șir în tăietură de rune backToString := string(byteslice) // Tăietură de octeți în șir backToString = string(rs) // Tăietură de rune în șir -
Pachetul
strings: Oferă multe funcții utile:Contains,HasPrefix,HasSuffixIndex,LastIndexReplace,ToUpper,ToLower,Trim,TrimSpaceSplit,Join
-
Pachetul
strconv: Pentru conversia șirurilor în alte tipuri de date (numere, booleani) și invers.i, err := strconv.Atoi("123") // Șir în int s := strconv.Itoa(456) // Int în șir -
Imutabilitatea: Orice operație care pare să modifice un șir (de exemplu, concatenarea) creează de fapt un nou șir. Acest lucru este important pentru performanță în cazul modificărilor frecvente. În astfel de cazuri, este mai bine să folosiți
[]bytesaustrings.Builder.