Sobes.tech
Junior

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, HasSuffix
    • Index, LastIndex
    • Replace, ToUpper, ToLower, Trim, TrimSpace
    • Split, 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 []byte ou strings.Builder.