Isu: Apabila menggunakan fmt.Scanf() untuk mendapatkan input pengguna, ia boleh menjadi mencabar untuk mengendalikan input tidak sah dengan berkesan. Jika pengguna memasukkan aksara bukan angka, gelung akan terus berulang, mewujudkan pengalaman yang tidak diingini.
Penyelesaian:
Untuk menyelesaikan isu ini, adalah penting untuk mengepam stdin (input standard) selepas setiap permintaan input. Dengan berbuat demikian, mana-mana aksara tidak sah yang tinggal dalam penimbal input dibuang, memastikan permintaan input seterusnya bermula dengan senarai yang bersih.
Penyelesaian Menggunakan fmt.Scanln:
Fungsi fmt.Scanln boleh digunakan untuk membaca rentetan daripada stdin dan mengendalikan aksara baris baharu secara automatik. Dengan menggunakan fmt.Scanln, gelung boleh dipermudahkan tanpa memerlukan pembilasan eksplisit stdin:
<code class="go">package main import ( "fmt" ) func main() { fmt.Println("Please enter an integer: ") // Read in an integer var userI int _, err := fmt.Scanln(&userI) if err != nil { fmt.Printf("Error: %s", err.Error()) return } fmt.Println(userI) }</code>
Penyelesaian Alternatif:
Jika tiada terbina dalam fungsi flushing stdin, penyelesaian alternatif boleh digunakan:
Kesimpulan:
Walaupun tiada fungsi pembilasan stdin terbina dalam dalam Go, teknik seperti menggunakan fmt.Scanln atau penyelesaian alternatif boleh mengendalikan input tidak sah dengan berkesan dan mengekalkan gelung mesra pengguna.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Input Tidak Sah dan Flush Input Standard Selepas `fmt.Scanf()` dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!