Scanf Function Quirks pada Windows
Semasa menggunakan Scanf untuk input pengguna, tingkah laku pelik telah diperhatikan: ia berjaya mendapatkan semula input pada kali pertama , tetapi melangkau permintaan input kedua dan keluar secara tiba-tiba dari fungsi. Isu ini dihadapi secara khusus apabila dijalankan pada sistem Windows.
Kod dalam Soalan:
<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:
Kebergantungan Scanf pada ruang sebagai pemisah dan kelakuannya yang tidak intuitif boleh menjadi masalah. Untuk mengurangkan perkara ini, menggunakan pakej bufio menyediakan pendekatan yang lebih halus:
<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 any trailing newline characters }</code>
Atas ialah kandungan terperinci Mengapa Scanf Melangkau Input pada Windows? Penjelasan dan Penyelesaian Terperinci.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!