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
DDDasal
2025-01-02 17:47:42272semak imbas

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!!")
    }
}

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!

Kenyataan:
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