ホームページ  >  記事  >  バックエンド開発  >  ## Go で文字列をその場で変更できないのはなぜですか?

## Go で文字列をその場で変更できないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-27 10:25:30815ブラウズ

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

Go では文字列をその場で変更できないのはなぜですか?

Go の文字列は不変です。つまり、一度作成すると内容を変更することはできません。これは、「new_str[i] に割り当てられません」というエラーから明らかです。

文字列の内容を変更するには、まず文字列を []byte スライスにキャストする必要があります。文字列とは異なり、バイト スライスは確かに変更可能です。その後、バイト スライスに対して必要な変更を実行し、string(...) 関数を使用して文字列にキャストし直すことができます。

これは、バイト スライスを使用して小文字を次のように変更するコードの修正バージョンです。 uppercase:

<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>

ToUpper("cdsrgGDH7865fxgh") を呼び出すと、すべての小文字が大文字に正しく変換されます。

以上が## Go で文字列をその場で変更できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。