Bahasa Go sering menggunakan kaedah Baca yang disediakan oleh pakej io semasa memproses operasi input dan output. Tetapi kadangkala apabila menggunakan kaedah ReadFull, ralat undefined: io.ReadFull berlaku. Artikel ini menerangkan punca dan penyelesaian kepada ralat ini.
Dalam pakej io versi sebelum Go 1.16, kaedah ReadFull tidak ditakrifkan. Oleh itu, dalam versi ini, merujuk kaedah io.ReadFull menghasilkan ralat yang tidak ditentukan.
Dalam versi Go 1.16, pakej io telah menentukan kaedah ReadFull. Oleh itu, jika ralat undefined: io.ReadFull berlaku, ini bermakna versi Go yang digunakan pada masa ini adalah lebih rendah daripada 1.16.
Untuk menyelesaikan ralat ini, terdapat dua kaedah untuk dipilih:
Pakej io menyediakan kaedah ReadAtLeast, yang boleh membaca data a panjang yang ditentukan pada satu masa. Kaedah ini digunakan seperti berikut:
func ReadAtLeast(r Reader, buf []byte, min int) (n int, err error)
Antaranya, r mewakili data sumber yang akan dibaca, buf mewakili kawasan penimbal tempat data yang dibaca disimpan, dan min mewakili panjang data yang akan dibaca.
Berikut ialah contoh kod untuk membaca data menggunakan kaedah ReadAtLeast:
package main import ( "io" "log" "os" ) func main() { file, err := os.Open("file.txt") if err != nil { log.Fatal(err) } defer file.Close() buffer := make([]byte, 1024) n, err := io.ReadAtLeast(file, buffer, 1024) if err != nil { log.Fatal(err) } log.Printf("Read %d bytes from file.", n) }
Memandangkan kaedah ReadFull telah ditakrifkan dalam versi Go 1.16, menaik taraf versi Go kepada 1.16 atau ke atas boleh juga menyelesaikan soalan masalah ini.
Untuk menaik taraf versi Go, anda boleh memuat turun dan memasang versi terbaharu kit alat Go dengan melawati tapak web rasmi, atau gunakan pengurus pakej untuk mengemas kini kit alat Go.
Sama ada anda menggunakan kaedah ReadAtLeast dan bukannya kaedah ReadFull, atau tingkatkan versi Go, anda boleh menyelesaikan ralat yang tidak ditentukan: io.ReadFull. Pembangun disyorkan untuk menaik taraf kepada versi terkini kit alat Go untuk dapat menggunakan ciri bahasa dan fungsi perpustakaan terkini.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat 'undefined: io.ReadFull' dalam golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!