Maison > développement back-end > Golang > 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
Libérer: 2024-10-26 04:33:02
original
544 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal