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

DDD
Lepaskan: 2024-10-28 09:04:30
asal
640 orang telah melayarinya

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>
Salin selepas log masuk
  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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!