首頁  >  文章  >  後端開發  >  在知道 Go 中的字串是不可變的情況下,如何修改它們?

在知道 Go 中的字串是不可變的情況下,如何修改它們?

DDD
DDD原創
2024-10-26 04:33:02461瀏覽

How Do I Modify Strings in Go, Knowing They Are Immutable?

在Go 中更改字串:實用的解決方案

在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) 建立字串中的位元組切片,string(new_str) 將修改後的位元組切片轉換回字串。

透過此更改,您現在可以更改字串並將小寫字元隱藏為大寫:

fmt.Println(ToUpper("cdsrgGDH7865fxgh")) // Output: CDSRGgdh7865FXGH

以上是在知道 Go 中的字串是不可變的情況下,如何修改它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn