Bagaimanakah Saya Mengubah Suai Rentetan dalam Go, Mengetahui Ia Tidak Boleh Berubah?

DDD
Lepaskan: 2024-10-26 04:33:02
asal
462 orang telah melayarinya

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

Mengubah Rentetan dalam Go: Penyelesaian Praktikal

Dalam Go, rentetan tidak boleh diubah, bermakna kandungannya tidak boleh diubah suai setelah dibuat. Ini boleh mengecewakan apabila cuba mengubah rentetan sedia ada, tetapi terdapat penyelesaian mudah menggunakan pakej fmt.

Pertimbangkan kod berikut:

<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>
Salin selepas log masuk

Kod ini cuba menggunakan huruf besar huruf kecil dalam rentetan, tetapi anda akan menghadapi ralat: "tidak boleh menetapkan kepada new_str[i]". Ini kerana rentetan tidak boleh diubah.

Untuk mengatasinya, kita boleh menukar rentetan itu kepada kepingan bait dan sebaliknya mengubahnya:

<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>
Salin selepas log masuk

Di sini, []bait(str) mencipta hirisan bait daripada rentetan dan rentetan(new_str) menukar hirisan bait yang diubah suai kembali kepada rentetan.

Dengan perubahan ini, anda kini boleh mengubah rentetan dan aksara kecil terselindung kepada huruf besar:

fmt.Println(ToUpper("cdsrgGDH7865fxgh")) // Output: CDSRGgdh7865FXGH
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Mengubah Suai Rentetan dalam Go, Mengetahui Ia Tidak Boleh Berubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!