Rumah > Artikel > pembangunan bahagian belakang > Tukar daripada `bufio.Reader` kepada `io.ReadWriteCloser`
Saya ada satu io.readwritecloser
dan saya ingin mengintipnya tanpa memajukan pembaca,
Jadi saya menggunakan
bi := bufio.NewReader(i) bi.Peek(1)
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
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) }
Cara penggunaan adalah seperti berikut:
rw := &BufferedReadWriteCloser{bufio.NewReader(i), i} p, err := rw.Peek(1)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!