Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Mengubah Suai Rentetan dalam Go, Mengetahui Ia Tidak Boleh Berubah?

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

DDD
DDDasal
2024-10-26 04:33:02461semak imbas

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>

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>

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

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!

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