Apabila bekerja dengan io.ReadCloser jenis seperti permintaan.Body, ia boleh menjadi masalah apabila ingin melakukan berbilang operasi (cth., tulis pada fail dan nyahkod). Panggilan terus ke ioutil.ReadAll() menggunakan keseluruhan strim, menjadikan operasi seterusnya mustahil.
Tidak seperti bacaan langsung, io.TeeReader membenarkan pengguna menduplikasi io. Strim pembaca, membolehkan berbilang rujukan kepada kandungan yang sama. Ini menyelesaikan masalah membaca data yang sama dua kali.
Berikut ialah pelaksanaan menggunakan io.TeeReader:
package main import ( "bytes" "io" "io/ioutil" "log" "strings" ) func main() { r := strings.NewReader("io.Reader contents to be read") var buf bytes.Buffer tee := io.TeeReader(r, &buf) // Perform the first operation using tee. log.Println(ioutil.ReadAll(tee)) // Perform the second operation using the duplicated content in the buffer. log.Println(ioutil.ReadAll(&buf)) }
Atas ialah kandungan terperinci Bagaimanakah saya Boleh Menduakan io.Reader untuk Operasi Bacaan Berbilang dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!