Rumah >pembangunan bahagian belakang >Golang >Mengapa Scanf Gagal pada Input Kedua dalam Go pada Windows?

Mengapa Scanf Gagal pada Input Kedua dalam Go pada Windows?

DDD
DDDasal
2024-10-26 11:14:29640semak imbas

Why Does Scanf Fail on Second Input in Go on Windows?

Ralat Menggunakan Scanf dalam GOLang pada Windows

Fungsi Scanf dalam GOLang boleh menimbulkan isu apabila cuba mendapatkan input pengguna dua kali. Input pertama berjaya diambil, tetapi fungsi itu ditamatkan secara tiba-tiba semasa percubaan kedua pada sistem Windows. Tingkah laku ini tidak berlaku pada macOS.

<code class="go">func credentials() (string, string) {

    var username string
    var password string

    fmt.Print("Enter Username: ")
    fmt.Scanf("%s", &username)

    fmt.Print("Enter Password: ")
    fmt.Scanf("%s", &password)

    return username, password
}</code>

Penyelesaian:

Scanf adalah pelik dalam penggunaan ruang sebagai pemisah, menjadikannya agak mencabar untuk digunakan. Bufio menawarkan alternatif unggul yang memudahkan proses.

<code class="go">func credentials() (string, string) {
    reader := bufio.NewReader(os.Stdin)

    fmt.Print("Enter Username: ")
    username, _ := reader.ReadString('\n')

    fmt.Print("Enter Password: ")
    password, _ := reader.ReadString('\n')

    return strings.TrimSpace(username), strings.TrimSpace(password) // Remove trailing newline character
}</code>

Kod yang diubah suai ini menangani isu dan berfungsi dengan lancar pada kedua-dua Windows dan macOS.

Atas ialah kandungan terperinci Mengapa Scanf Gagal pada Input Kedua dalam Go pada Windows?. 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