Heim >Backend-Entwicklung >Golang >Konvertieren von „bufio.Reader' in „io.ReadWriteCloser'.
Ich habe einen io.readwritecloser
und möchte einen Blick darauf werfen, ohne die Leser voranzubringen,
Also verwende ich
bi := bufio.NewReader(i) bi.Peek(1)
So weit so gut, aber wenn ich dann das Original io.readwritecloser
(i
) 时,它只有 eof
(i
) wiederverwenden möchte, hat es nur eof
.
Meine Frage ist also, wie man von bufio.reader
zurück in bufio.reader
转换回 io.readwritecloser
konvertiert. Da bufio.reader die Daten vom zugrunde liegenden Reader puffert, muss die Anwendung dies nach dem Aufruf von peek tun Daten aus bufio.reader lesen.
Um einen io.readwritecloser zu erhalten, der dies tut, verpacken Sie bufio.reader und den ursprünglichen io.readwritecloser:
// 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) }
Die Anwendung ist wie folgt:
rw := &BufferedReadWriteCloser{bufio.NewReader(i), i} p, err := rw.Peek(1)Der Wert von
rw
erfüllt die Schnittstelle io.readwritecloser.
Erfordert oder setzt nicht voraus, dass io.readwritecloser über eine Suchmethode verfügt.
Das obige ist der detaillierte Inhalt vonKonvertieren von „bufio.Reader' in „io.ReadWriteCloser'.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!