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!