Rumah > pembangunan bahagian belakang > Golang > Mengapa `bytes.Buffer` Gagal Melaksanakan `io.Writer` dalam Go, dan Bagaimana Ia Boleh Dibetulkan?

Mengapa `bytes.Buffer` Gagal Melaksanakan `io.Writer` dalam Go, dan Bagaimana Ia Boleh Dibetulkan?

Barbara Streisand
Lepaskan: 2024-12-09 13:57:12
asal
1000 orang telah melayarinya

Why Does `bytes.Buffer` Fail to Implement `io.Writer` in Go, and How Can It Be Fixed?

Melaksanakan io.Writer for String-Writing Objects

Dalam Go, kita selalunya perlu mencipta objek yang melaksanakan antara muka io.Writer untuk mengendalikan operasi menulis. Walau bagaimanapun, apabila cuba menggunakan bait.Penimbal, kekeliruan boleh timbul walaupun kaedah Tulis dilaksanakan.

Penjelasan Ralat

Mesej ralat "bait.Penimbal tidak not implement io.Writer" berlaku kerana bytes.Buffer mempunyai penerima penunjuk untuk Write kaedah:

func (b *Buffer) Write(p []byte) (n int, err error)
Salin selepas log masuk

Ini bermakna kaedah mesti dipanggil pada penunjuk ke penimbal, bukan pada penimbal itu sendiri. Percubaan untuk menghantar penimbal secara terus, seperti yang ditunjukkan dalam coretan kod di bawah, menyebabkan ralat.

var b bytes.Buffer
foo := bufio.NewWriter(b)
Salin selepas log masuk

Penyelesaian: Menghantar Penunjuk kepada Penampan

Untuk menyelesaikan ralat ini, kita perlu menghantar penunjuk kepada penimbal dan bukannya penimbal itu sendiri. Ini kerana bufio.NewWriter menjangkakan antara muka io.Writer, dan penuding kepada penimbal melaksanakan antara muka ini dengan betul.

var b bytes.Buffer
foo := bufio.NewWriter(&b) // Pass a pointer to the buffer
Salin selepas log masuk

Dengan pengubahsuaian ini, atur cara akan berjaya mencipta penulis yang menulis kepada penimbal rentetan .

Atas ialah kandungan terperinci Mengapa `bytes.Buffer` Gagal Melaksanakan `io.Writer` dalam Go, dan Bagaimana Ia Boleh Dibetulkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan