首頁 > 後端開發 > Golang > 主體

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

DDD
發布: 2024-10-26 04:33:02
原創
462 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!