Rumah >pembangunan bahagian belakang >Golang >Mengapa `reader.ReadString('\n')` Tidak Mengendalikan Pembatas Baris Baharu dengan Amanah dalam Go?
Mengapa pembaca.ReadString Tidak Mengendalikan Delimeter Dengan Betul
Dalam program Go yang disediakan, isu timbul apabila menggunakan reader.ReadString(' n') untuk membaca sebaris teks. Apabila pengguna memasukkan "Alice" atau "Bob," teks input mengandungi aksara baris baharu tambahan, menyebabkan ketidakpadanan dengan pembatas yang ditentukan ('n').
Penyelesaian: Potong atau Gunakan ReadLine
Untuk menyelesaikan isu ini, anda boleh sama ada memangkas ruang putih (termasuk aksara baris baharu) selepas membaca rentetan atau menggunakan pembaca.ReadLine() secara langsung.
Memangkas Ruang Putih dengan rentetan.TrimSpace
package main import ( "bufio" "fmt" "os" "strings" ) func main() { reader := bufio.NewReader(os.Stdin) fmt.Print("Who are you? \n Enter your name: ") text, _ := reader.ReadString('\n') if aliceOrBob(strings.TrimSpace(text)) { fmt.Printf("Hello, ", text) } else { fmt.Printf("You're not allowed in here! Get OUT!!") } }
Menggunakan ReadLine
package main import ( "bufio" "fmt" "os" ) func main() { reader := bufio.NewReader(os.Stdin) fmt.Print("Who are you? \n Enter your name: ") text, _, _ := reader.ReadLine() if aliceOrBob(string(text)) { fmt.Printf("Hello, ", text) } else { fmt.Printf("You're not allowed in here! Get OUT!!") } }
Dengan mengendalikan rentetan input dengan betul, program kini boleh mengenal pasti dengan betul sama ada nama pengguna adalah "Alice" atau "Bob" dan balas dengan sewajarnya.
Atas ialah kandungan terperinci Mengapa `reader.ReadString('\n')` Tidak Mengendalikan Pembatas Baris Baharu dengan Amanah dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!