Memahami Penggunaan Input dalam Go: Flushing dan Alternatif
Apabila berinteraksi dengan pengguna melalui terminal, pengendalian input tidak sah boleh menjadi mencabar. Dalam Go, menggunakan fmt.Scanf() untuk membaca input mungkin menghadapi masalah apabila pengguna memasukkan nilai bukan integer. Ini kerana fmt.Scanf() tidak menggunakan keseluruhan baris, meninggalkan baki aksara yang mungkin mengganggu input seterusnya.
Untuk menangani isu ini, satu pilihan adalah untuk mengepam penimbal input secara eksplisit selepas entri yang tidak sah . Walau bagaimanapun, Go tidak menyediakan kaedah langsung untuk membilas Stdin.
Pendekatan Alternatif:
<code class="go">fmt.Println("Please enter an integer:") var userI int _, err := fmt.Scanln(&userI) if err != nil { fmt.Println("Sorry, invalid input. Please try again:") }</code>
<code class="go">func GetUserInputInt() int { var userI int for { fmt.Println("Please enter an integer:") _, err := fmt.Scanf("%d", &userI) if err == nil { return userI } fmt.Println("Sorry, invalid input. Please try again:") fmt.Scanln() // Discard invalid input } }</code>
Atas ialah kandungan terperinci Cara Mengendalikan Input Pengguna Tidak Sah dalam Go: Flushing Stdin dan Alternatif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!