Rumah >pembangunan bahagian belakang >Golang >Mengapakah Go\'s fmt.Scanln Memberi Ralat \'Baris Baharu yang Dijangka\'?
ralat fmt.Scanln: Jangkaan Baris Baharu
Apabila menggunakan fungsi fmt.Scanln dalam Go, anda mungkin menghadapi ralat "garis baharu dijangka" . Ini berlaku apabila input mengandungi aksara baris baharu sebelum pembatas yang dijangkakan (biasanya ruang). Untuk menangani perkara ini, mari kita mendalami tingkah laku fmt.Scan dan fmt.Scanln.
fmt.Scan membaca nilai yang dipisahkan ruang daripada input standard, menganggap baris baharu sebagai ruang. Ia memberikan nilai ini kepada argumen yang sepadan, mengembalikan kiraan item yang berjaya diimbas.
fmt.Scanln berkelakuan serupa tetapi berhenti mengimbas pada baris baharu. Secara kritikal, input mesti berakhir dengan baris baharu atau EOF untuk berjaya diselesaikan.
Untuk menggambarkan ini, pertimbangkan input berikut:
123 123.456 everybody loves ice cream
Apabila menggunakan fmt.Scan, output akan menjadi :
read 1 integer: 123 read 1 float64: 123.456 read 1 string: everybody Error: Scan: expected newline
fmt.Scan mentafsirkan "semua orang suka aiskrim" sebagai dua rentetan, mengakibatkan ralat.
Namun, jika anda menggunakan fmt.Scanln untuk input yang sama, output akan menjadi:
read 1 integer: 123 read 1 float64: 123.456 read 1 string: everybody loves ice cream
fmt.Scanln mengenali baris baharu sebagai pembatas dan menghuraikan keseluruhan baris dengan betul sebagai argumen rentetan tunggal.
Untuk membaca baris yang berakhir dengan aksara baris baharu dalam Pergi, anda boleh menggunakan bufio.Reader dan kaedah ReadStringnya:
line, err := buffer.ReadString('\n')
Atas ialah kandungan terperinci Mengapakah Go\'s fmt.Scanln Memberi Ralat \'Baris Baharu yang Dijangka\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!