Maison  >  Article  >  développement back-end  >  Comment modifier des chaînes dans Go, sachant qu’elles sont immuables ?

Comment modifier des chaînes dans Go, sachant qu’elles sont immuables ?

DDD
DDDoriginal
2024-10-26 04:33:02463parcourir

How Do I Modify Strings in Go, Knowing They Are Immutable?

Modifier les chaînes dans Go : une solution pratique

Dans Go, les chaînes sont immuables, ce qui signifie que leur contenu ne peut pas être modifié une fois créé. Cela peut être frustrant lorsque vous tentez de modifier une chaîne existante, mais il existe une solution simple en utilisant le package fmt.

Considérez le code suivant :

<code class="go">package main

import "fmt"

func ToUpper(str string) string {
    new_str := str
    for i := 0; i < len(str); i++ {
        if str[i] >= 'a' && str[i] <= 'z' {
            chr := uint8(rune(str[i]) - 'a' + 'A')
            new_str[i] = chr
        }
    }
    return new_str
}

func main() {
    fmt.Println(ToUpper("cdsrgGDH7865fxgh"))
}</code>

Ce code tente de mettre les caractères en majuscules et minuscules. dans une chaîne, mais vous rencontrerez une erreur : "impossible d'attribuer à new_str[i]". En effet, les chaînes sont immuables.

Pour surmonter ce problème, nous pouvons convertir la chaîne en une tranche d'octets et la modifier à la place :

<code class="go">func ToUpper(str string) string {
    new_str := []byte(str)
    for i := 0; i < len(str); i++ {
        if str[i] >= 'a' && str[i] <= 'z' {
            chr := uint8(rune(str[i]) - 'a' + 'A')
            new_str[i] = chr
        }
    }
    return string(new_str)
}</code>

Ici, []byte(str) crée une tranche d'octets de la chaîne, et string(new_str) reconvertit la tranche d'octets modifiée en chaîne.

Avec ce changement, vous pouvez désormais modifier les chaînes et convertir les caractères minuscules en majuscules :

fmt.Println(ToUpper("cdsrgGDH7865fxgh")) // Output: CDSRGgdh7865FXGH

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn