Maison  >  Article  >  développement back-end  >  ## Pourquoi ne puis-je pas modifier une chaîne en place dans Go ?

## Pourquoi ne puis-je pas modifier une chaîne en place dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-27 10:25:30815parcourir

## Why Can't I Modify a String in Place in Go?

Pourquoi ne puis-je pas modifier une chaîne en place dans Go ?

Les chaînes dans Go sont immuables, ce qui signifie qu'une fois créées, vous ne pouvez pas modifier leur contenu. Cela ressort clairement de l'erreur suivante : "cannot assign to new_str[i]".

Pour modifier le contenu d'une chaîne, vous devez d'abord la convertir en une tranche []byte. Contrairement aux chaînes, les tranches d'octets sont en effet mutables. Vous pouvez ensuite effectuer les modifications souhaitées sur la tranche d'octets et la reconvertir en chaîne à l'aide de la fonction string(...).

Voici une version modifiée de votre code qui utilise des tranches d'octets pour changer les caractères minuscules en majuscule :

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

Maintenant, lorsque vous appelez ToUpper("cdsrgGDH7865fxgh"), il convertira correctement tous les caractères minuscules en majuscules.

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