pembaca.ReadString Tidak Menanggalkan Pembatas Awal
Dalam usaha untuk mencipta program yang menyambut pengguna bernama Alice atau Bob, seorang pembangun menghadapi isu di mana nama yang sah pun mencetuskan respons yang tidak diingini. Program ini tersilap menafikan kemasukan kepada kedua-dua Alice dan Bob.
Masalahnya
Isu ini berpunca daripada penggunaan pembaca.ReadString('n') dalam program. Fungsi ini mendapatkan semula aksara sehingga aksara baris baharu ditemui. Walau bagaimanapun, ia tidak mengalih keluar pembatas secara automatik daripada rentetan yang dikembalikan, membawa kepada kemasukan baris baharu tambahan dalam input pengguna.
Penyelesaian
Untuk menyelesaikan isu ini , terdapat dua pendekatan yang mungkin:
1. Potong Garis Baharu
Gunakan fungsi rentetan.TrimSpace untuk mengalih keluar sebarang ruang kosong di hadapan atau di belakang daripada rentetan input sebelum menilainya. Ini secara berkesan mengalih keluar watak baris baharu yang menyebabkan masalah.
if aliceOrBob(strings.TrimSpace(text)) { fmt.Printf("Hello, ", text) }
2. Gunakan ReadLine Daripada ReadString
Sebagai alternatif, fungsi ReadLine boleh digunakan dan bukannya ReadString. ReadLine mendapatkan semula baris teks tanpa memasukkan aksara baris baharu dalam rentetan yang dikembalikan.
text, _, _ := reader.ReadLine() if aliceOrBob(string(text)) { fmt.Printf("Hello, ", text) }
Penjelasan
Sebab untuk menggunakan rentetan(teks) dengan ReadLine ialah kerana ReadLine mengembalikan kepingan bait, manakala aliceOrBob memerlukan hujah rentetan.
Atas ialah kandungan terperinci Mengapa `reader.ReadString` tidak mengalih keluar Pembatas Awal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!