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)
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)
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
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!