Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menukarkan Go []int8 Slice dengan Cekap kepada Rentetan?

Bagaimana untuk Menukarkan Go []int8 Slice dengan Cekap kepada Rentetan?

Barbara Streisand
Barbara Streisandasal
2024-12-15 10:44:10499semak imbas

How to Efficiently Convert a Go []int8 Slice to a String?

Menukar []int8 kepada Rentetan

Masalah:

Cara menukar kepingan dengan cekap daripada int8 ([]int8) kepada rentetan? Penukaran rentetan(bait) standard untuk []bait gagal untuk []int8 dengan ralat "tidak boleh menukar kepada rentetan taip."

Penyelesaian:

Sejak [] int8 dan []bait mempunyai jenis yang berbeza, penukaran langsung tidak boleh dilakukan. Oleh itu, penukaran manual diperlukan.

Proses penukaran melibatkan tiga langkah:

  1. Tukar int8 kepada bait: Hantar setiap nilai int8 kepada bait menggunakan bait (v) penukaran.
  2. Buat kepingan bait: Peruntukkan []hirisan bait dengan panjang yang sama dengan kepingan input.
  3. Salin nilai ke kepingan bait: Berikan bait yang ditukar kepada kepingan bait menggunakan pengindeksan ([]).

Pelaksanaan Kod:

Kod Go berikut menunjukkan penukaran:

func B2S(bs []int8) string {
    b := make([]byte, len(bs))
    for i, v := range bs {
        b[i] = byte(v)
    }
    return string(b)
}

Kod ini memastikan nilai int8 ditukar dengan betul kepada bait, menghasilkan perwakilan rentetan yang tepat.

Nota:

Walaupun pernyataan masalah pada mulanya menyebut []int8, penanya kemudian membetulkannya kepada []uint8. Untuk []uint8, penukaran terus kepada rentetan menggunakan rentetan(ba) adalah mungkin kerana bait ialah alias untuk uint8.

Atas ialah kandungan terperinci Bagaimana untuk Menukarkan Go []int8 Slice dengan Cekap kepada Rentetan?. 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