Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menampan Data Panjang Pembolehubah dengan Cekap di Golang?

Bagaimana untuk Menampan Data Panjang Pembolehubah dengan Cekap di Golang?

DDD
DDDasal
2024-10-26 12:43:03914semak imbas

How to Efficiently Buffer Variable-Length Data in Golang?

Menimbal Data Panjang Pembolehubah di Golang

Dalam senario di mana anda memerlukan penimbal untuk mengendalikan data masuk dengan panjang berubah-ubah, pendekatan yang dikemukakan dalam soalan menggunakan penimbal saiz tetap, yang berpotensi membawa kepada bacaan yang tidak cekap. Pertimbangkan penyelesaian yang dipertingkatkan berikut:

<code class="go">import (
    "bytes"
    "fmt"
    "io"
)

func readVariableLengthData(conn io.Reader) ([]byte, error) {
    buf := new(bytes.Buffer)

    if _, err := io.Copy(buf, conn); err != nil {
        return nil, err
    }

    return buf.Bytes(), nil
}</code>

Penyelesaian ini menggunakan bait.Penimbal, yang membolehkan pertumbuhan dinamik penimbal mengikut keperluan. Begini cara pendekatan yang dipertingkatkan ini berfungsi:

  1. Buat bait.Penimbal: Bait.Penimbal boleh menampung kepingan bait yang semakin meningkat, membenarkan penimbal berkembang apabila data baharu ditulis kepadanya.
  2. Gunakan io.Copy: Fungsi io.Copy menyalin data dengan cekap daripada pembaca sambungan (sambungan) ke bait.Penimbal.
  3. Kembalikan Bait Penampan: Setelah strim dibaca sepenuhnya, kami mengembalikan salinan bait yang disimpan dalam penimbal.

Dengan menggunakan pendekatan yang disemak ini, anda boleh mengendalikan data panjang berubah-ubah mengalir dengan anggun tanpa membuang ingatan pada ruang penimbal yang tidak digunakan.

Atas ialah kandungan terperinci Bagaimana untuk Menampan Data Panjang Pembolehubah dengan Cekap di Golang?. 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