Rumah > pembangunan bahagian belakang > Golang > Mengapa `reader.ReadString('\n')` Tidak Mengendalikan Pembatas Baris Baharu dengan Amanah dalam Go?

Mengapa `reader.ReadString('\n')` Tidak Mengendalikan Pembatas Baris Baharu dengan Amanah dalam Go?

DDD
Lepaskan: 2025-01-02 17:47:42
asal
271 orang telah melayarinya

Why Doesn't `reader.ReadString('n')` Reliably Handle Newline Delimiters in 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!!")
    }
}
Salin selepas log masuk

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!!")
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan