Rumah > pembangunan bahagian belakang > Golang > Tukar daripada `bufio.Reader` kepada `io.ReadWriteCloser`

Tukar daripada `bufio.Reader` kepada `io.ReadWriteCloser`

王林
Lepaskan: 2024-02-05 22:48:07
ke hadapan
960 orang telah melayarinya

从 `bufio.Reader` 转换为 `io.ReadWriteCloser`

Isi soalan

Saya ada satu io.readwritecloser dan saya ingin mengintipnya tanpa memajukan pembaca,

Jadi saya menggunakan

bi := bufio.NewReader(i)
bi.Peek(1)
Salin selepas log masuk

Setakat ini begitu bagus, tetapi apabila saya mahu menggunakan semula yang asal io.readwritecloser (i) 时,它只有 eof (i) ia hanya mempunyai eof.

Jadi soalan saya ialah bagaimana untuk menukar daripada bufio.reader kembali kepada bufio.reader 转换回 io.readwritecloser


Jawapan betul


Memandangkan bufio.reader menimbal data daripada pembaca asas, aplikasi mesti melakukan ini selepas memanggil peek Baca data daripada bufio.reader.

Untuk mendapatkan io.readwritecloser yang melakukan ini, bungkus bufio.reader dan io.readwritecloser asal:

// bufferedreadwritecloser has all of the methods
// from *bufio.reader and io.readwritecloser.
type bufferedreadwritecloser struct {
    *bufio.reader
    io.readwritecloser
}

func (rw *bufferedreadwritecloser) read(p []byte) (int, error) {
    return rw.reader.read(p)
}
Salin selepas log masuk

Cara penggunaan adalah seperti berikut:

rw := &BufferedReadWriteCloser{bufio.NewReader(i), i}
p, err := rw.Peek(1)
Salin selepas log masuk
Nilai

rw memenuhi antara muka io.readwritecloser.

Tidak memerlukan atau menganggap bahawa io.readwritecloser mempunyai kaedah cari.

Atas ialah kandungan terperinci Tukar daripada `bufio.Reader` kepada `io.ReadWriteCloser`. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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