Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengekod dan Menyahkod Tatasusunan Rentetan dengan Cekap sebagai Tatasusunan Byte dalam Go?

Bagaimana untuk Mengekod dan Menyahkod Tatasusunan Rentetan dengan Cekap sebagai Tatasusunan Byte dalam Go?

DDD
Lepaskan: 2024-11-08 20:21:02
asal
399 orang telah melayarinya

How to Efficiently Encode and Decode String Arrays as Byte Arrays in Go?

Pengekodan dan Penyahkodan Tatasusunan Rentetan sebagai Tatasusunan Byte dalam Go

Untuk mengekod tatasusunan rentetan ([]rentetan) kepada tatasusunan bait ([ ]bait) untuk storan cakera, penyelesaian optimum melibatkan mempertimbangkan format bersiri. Pelbagai format menyediakan ciri yang berbeza dan pertukaran kecekapan, termasuk:

Gob:

Gob ialah format binari yang sesuai untuk kod Go. Ia cekap ruang untuk tatasusunan rentetan besar:

enc := gob.NewEncoder(file)
enc.Encode(data)
Salin selepas log masuk

Untuk penyahkodan:

var data []string
dec := gob.NewDecoder(file)
dec.Decode(&data)
Salin selepas log masuk

JSON:

JSON ialah format yang digunakan secara meluas . Ia mudah dikodkan dan diyahkodkan:

enc := json.NewEncoder(file)
enc.Encode(data)
Salin selepas log masuk

Untuk penyahkodan:

var data []string
dec := json.NewDecoder(file)
dec.Decode(&data)
Salin selepas log masuk

XML:

XML mempunyai overhed yang lebih tinggi berbanding Gob dan JSON . Ia memerlukan teg pembalut akar dan rentetan:

type Strings struct {
    S []string
}

enc := xml.NewEncoder(file)
enc.Encode(Strings{data})
Salin selepas log masuk

Untuk penyahkodan:

var x Strings
dec := xml.NewDecoder(file)
dec.Decode(&x)
data := x.S
Salin selepas log masuk

CSV:

CSV hanya mengendalikan nilai rentetan. Ia boleh menggunakan berbilang baris atau berbilang rekod. Contoh berikut menggunakan berbilang rekod:

enc := csv.NewWriter(file)
for _, v := range data {
    enc.Write([]string{v})
}
enc.Flush()
Salin selepas log masuk

Untuk penyahkodan:

var data string
dec := csv.NewReader(file)
for err == nil {
    s, err := dec.Read()
    if len(s) > 0 {
        data = append(data, s[0])
    }
}
Salin selepas log masuk

Pertimbangan Prestasi:

Pilihan format yang optimum bergantung pada keperluan khusus. Jika kecekapan ruang menjadi keutamaan, Gob dan JSON ialah pilihan yang baik. XML mempunyai overhed yang lebih tinggi tetapi menyokong struktur data yang kompleks. CSV paling sesuai untuk tatasusunan rentetan ringkas.

Untuk pengekodan tersuai, pengekodan/pakej binari boleh digunakan, tetapi ia memerlukan usaha pelaksanaan yang lebih tinggi.

Atas ialah kandungan terperinci Bagaimana untuk Mengekod dan Menyahkod Tatasusunan Rentetan dengan Cekap sebagai Tatasusunan Byte dalam Go?. 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