Go では、文字列は不変です。つまり、文字列の内容は作成後に変更できません。既存の文字列を変更しようとする場合、これはイライラするかもしれませんが、fmt パッケージを使用する簡単な解決策があります。
次のコードを考えてみましょう:
<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>
このコードは、小文字を大文字にしようとします。文字列内に記述しますが、「new_str[i] に割り当てられません」というエラーが発生します。これは、文字列が不変であるためです。
これを克服するには、文字列をバイトのスライスに変換し、代わりにそれを変更できます。
<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>
ここで、 []byte(str) は
この変更により、文字列を変更して小文字を大文字に変換できるようになりました。
fmt.Println(ToUpper("cdsrgGDH7865fxgh")) // Output: CDSRGgdh7865FXGH
以上が文字列が不変であることを知っていて、Go で文字列を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。