ホームページ  >  記事  >  バックエンド開発  >  文字列が不変の場合、Go で文字列を変更するにはどうすればよいですか?

文字列が不変の場合、Go で文字列を変更するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-26 12:38:29929ブラウズ

How Can I Modify a String in Go If It's Immutable?

Go での文字列変更: 「文字列に代入できません」エラーの解決

Go 文字列は不変です。つまり、一度直接変更することはできません。作成されました。この制限により、文字列の内容を変更しようとすると、「new_str[i] に割り当てられません」というエラーが発生することがよくあります。この課題を克服して文字列を変更するには、別のアプローチが必要です。

1 つの解決策は、文字列をバイト スライスに変換し、配列のように変更できるようにすることです。この手法を使用すると、文字列内の文字を置換できます。次のコードは、このアプローチを示しています。

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

このコードでは、文字列 str がバイト スライス new_str に変換されます。次に、バイト スライスが反復処理され、各バイトが ASCII 小文字の範囲と比較されます。小文字のバイトが見つかった場合は、対応する大文字の ASCII バイトに置き換えられます。最後に、変更されたバイト スライスが文字列に変換されて返されます。

このアプローチにより、Go で文字列の不変性を維持しながら文字列を変更できます。これは、さまざまなコンテキストで文字列を操作するための柔軟かつ効率的な方法を提供します。

以上が文字列が不変の場合、Go で文字列を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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