Rumah > pembangunan bahagian belakang > Golang > tali golang转slice

tali golang转slice

WBOY
Lepaskan: 2023-05-10 09:55:36
asal
1443 orang telah melayarinya

Dalam golang, jenis rentetan ialah jenis yang tidak berubah, iaitu nilainya tidak boleh diubah suai secara langsung. Tetapi dalam senario kadangkala kita perlu menukar jenis rentetan ke dalam urutan aksara yang boleh diubah suai (slice). Artikel ini akan memperkenalkan dua kaedah untuk mencapai penukaran ini.

Kaedah 1: Gunakan pakej rentetan

Pakej rentetan ialah pakej pemprosesan rentetan dalam pustaka standard golang, yang menyediakan kaedah untuk menukar rentetan menjadi kepingan. Pelaksanaan khusus adalah seperti berikut:

import "strings"

func StringToSlice(s string) []rune {
    return []rune(s)
}
Salin selepas log masuk

Jenis rune digunakan dalam kaedah ini Jenis rune mewakili aksara Unicode dan boleh memasukkan aksara dalam bahasa Cina, Jepun, Korea dan bahasa lain. Dengan menghantar jenis rentetan kepada jenis rune, anda boleh mendapatkan urutan aksara yang boleh diubah suai (slice).

Berikut ialah contoh mudah yang menunjukkan penggunaan kaedah ini:

package main

import (
    "fmt"
    "strings"
)

func StringToSlice(s string) []rune {
    return []rune(s)
}

func main() {
    s := "hello world"
    sl := StringToSlice(s)
    sl[0] = 'H'
    fmt.Println(sl)
    fmt.Println(strings.ToUpper(string(sl)))
}
Salin selepas log masuk

Keluaran program:

[72 101 108 108 111 32 119 111 114 108 100]
HELLO WORLD
Salin selepas log masuk

Dengan menghantar hirisan yang dikembalikan oleh fungsi StringToSlice kepada fungsi rentetan.ToUpper , kita boleh menukar rentetan kepada semua huruf besar.

Kaedah 2: Menggunakan kepingan bait

Selain menggunakan pakej rentetan, kita juga boleh menukar jenis rentetan menjadi kepingan bait, dan kemudian menukar kepingan bait menjadi kepingan jenis rune. Pelaksanaan khusus adalah seperti berikut:

func StringToSlice(s string) []rune {
    bs := []byte(s)
    rs := make([]rune, len(bs))
    for i, b := range bs {
        rs[i] = rune(b)
    }
    return rs
}
Salin selepas log masuk

Dalam kaedah ini, kami menggunakan kepingan jenis bait Jenis bait mewakili integer tidak bertanda 8-bit. Dengan menghantar jenis rentetan kepada kepingan jenis bait, kita boleh mendapatkan urutan yang disimpan dalam bait. Kami melintasi kepingan jenis bait, menukar setiap elemen kepada jenis rune, dan akhirnya mengembalikan kepingan jenis rune.

Berikut ialah contoh menggunakan kaedah ini:

package main

import (
    "fmt"
)

func StringToSlice(s string) []rune {
    bs := []byte(s)
    rs := make([]rune, len(bs))
    for i, b := range bs {
        rs[i] = rune(b)
    }
    return rs
}

func main() {
    s := "hello world"
    sl := StringToSlice(s)
    sl[0] = 'H'
    fmt.Println(sl)
}
Salin selepas log masuk

Keluaran program:

[72 101 108 108 111 32 119 111 114 108 100]
Salin selepas log masuk

Sama seperti kaedah 1, kita juga boleh menukar kepingan kepada rentetan menggunakan rentetan. fungsi operasi rentetan yang disediakan oleh pakej melaksanakan operasi seperti penukaran kes rentetan.

Kesimpulan

Secara amnya, kami mengesyorkan menggunakan API yang disediakan oleh pakej rentetan untuk memproses rentetan dan urutan aksara, kerana ia bukan sahaja memberikan prestasi yang lebih baik, tetapi juga menyediakan lebih Pelbagai jenis keselamatan. Tetapi dalam beberapa kes khas, kepingan bait menyediakan kaedah pemprosesan yang lebih fleksibel yang boleh menyesuaikan diri dengan keperluan yang berbeza.

Atas ialah kandungan terperinci tali golang转slice. 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