Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Mengendalikan Input Pengguna Tidak Sah dalam Go: Flushing Stdin dan Alternatif

Cara Mengendalikan Input Pengguna Tidak Sah dalam Go: Flushing Stdin dan Alternatif

DDD
DDDasal
2024-10-28 09:04:30640semak imbas

How to Handle Invalid User Input in Go: Flushing Stdin and Alternatives

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:

  1. Menggunakan fmt.Scanln(): fmt.Scanln() membaca baris input, termasuk ruang dan baris baharu. Ia menggunakan keseluruhan baris, menghapuskan keperluan untuk curahan eksplisit.
<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>
  1. Pengendalian Input Tersuai: Cipta fungsi tersuai untuk membaca dan mengesahkan input pengguna, menggunakan dan membuang entri tidak sah sehingga input yang sah diperolehi.
<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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn