fmt.Scanln Jangkaan Ralat Baris Baharu: Memahami Gelagat
Fungsi fmt.Scanln dalam Go menimbulkan ralat apabila menemui baris baharu yang hilang selepas membaca baris input. Tingkah laku ini, tidak seperti kaedah getline dalam C , adalah disengajakan dan didorong oleh pelaksanaan khusus fmt.Scanln.
Scan vs. Scanln
fmt.Scan reads input nilai yang diasingkan ruang dan menyimpannya dalam argumen yang ditentukan. Baris baharu dianggap sebagai aksara ruang. Sebaliknya, fmt.Scanln berhenti mengimbas pada baris baharu dan mesti ada baris baharu selepas item terakhir diimbas. Perbezaan ini timbul daripada penggunaan yang dimaksudkan:
Ralat
Apabila menggunakan fmt.Scanln tanpa baris baharu selepas input, ralat berlaku dicetuskan kerana fungsi menjangkakan baris baharu untuk menamatkan baris itu. Mesej ralat, "Imbas: garis baharu dijangka," menunjukkan keadaan ini.
Perbandingan dengan getline dalam C
Kaedah getline dalam C membaca baris input dan menyimpan dalam pembolehubah rentetan yang disediakan. Tidak seperti fmt.Scanln, getline tidak memerlukan baris baharu pada penghujung input. Perbezaan ini disebabkan oleh fakta bahawa getline biasanya digunakan untuk membaca keseluruhan baris, manakala fmt.Scanln direka untuk mengimbas nilai tertentu dalam baris.
Alternatif untuk Bacaan Baris
Jika anda perlu membaca baris input lengkap dalam Go, anda boleh menggunakan kaedah ReadString bufio.Reader type:
<code class="go">line, err := buffer.ReadString('\n')</code>
Kaedah ini membaca input sehingga aksara baris baharu ditemui dan disimpan baris dalam pembolehubah baris.
Dengan memahami gelagat fmt.Scanln dan perbezaannya daripada kaedah getline C, anda boleh menggunakan fungsi ini dengan berkesan untuk mengendalikan penghuraian input dalam program Go anda.
Atas ialah kandungan terperinci Scan lwn Scanln in Go: Memahami Gelagat Baris Baharu yang Dijangka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!