Comment peut-on travailler avec des chaînes dans le langage Go?
sobes.tech IA
Réponse de l'IA
Les chaînes en Go sont des séquences immuables d'octets. Elles peuvent représenter du texte UTF-8 ou des données binaires arbitraires.
Principales méthodes de travail :
-
Déclaration et initialisation :
var s1 string // Chaîne vide s2 := "bonjour" // Initialisation avec une littérale de chaîne s3 := `multiligne chaîne` // Littérale de chaîne brute -
Longueur de la chaîne :
len(s2) // Longueur en octets. Pour "bonjour" ce sera 7. -
Accès aux octets :
b := s2[0] // Obtention de l'octet à l'indice. Retourne 'b' (en UTF-8).L'accès direct aux octets ne garantit pas l'obtention d'un caractère UTF-8 complet.
-
Accès aux runes (caractères UTF-8) : Les chaînes peuvent être itérées par runes :
for index, runeValue := range s2 { fmt.Printf("Index : %d, Rune : %c\n", index, runeValue) }Longueur en runes :
utf8.RuneCountInString(s2) // Longueur en runes. Pour "bonjour" ce sera 7. -
Concaténation de chaînes :
str1 := "hello" str2 := " world" result := str1 + str2 // Concaténation avec +Pour une concaténation efficace de nombreuses chaînes, utilisez
strings.Builder.var sb strings.Builder sb.WriteString("hello") sb.WriteString(" ") sb.WriteString("world") result := sb.String() // Obtention de la chaîne résultante -
Conversion entre chaînes et slices de bytes/runes :
byteslice := []byte(s2) // Chaîne en slice de bytes rs := []rune(s2) // Chaîne en slice de runes backToString := string(byteslice) // Slice de bytes en chaîne backToString = string(rs) // Slice de runes en chaîne -
Package
strings: Offre de nombreuses fonctions utiles :Contains,HasPrefix,HasSuffixIndex,LastIndexReplace,ToUpper,ToLower,Trim,TrimSpaceSplit,Join
-
Package
strconv: Pour convertir des chaînes en autres types de données (nombres, booléens) et inversement.i, err := strconv.Atoi("123") // Chaîne en int s := strconv.Itoa(456) // int en chaîne -
Immuabilité : Toute opération semblant modifier une chaîne (par exemple, la concaténation) crée en réalité une nouvelle chaîne. Cela est important pour la performance lors de modifications fréquentes. Dans ces cas, il est préférable d'utiliser
[]byteoustrings.Builder.