Reader.ReadString은 선행 구분 기호를 유지할 수 있습니다
Go에서는 입력을 구문 분석할 때 bufio.Reader.ReadString 동작이 다를 수 있습니다. 다음 시나리오를 고려하십시오.
import ( "bufio" "fmt" "os" ) func main() { reader := bufio.NewReader(os.Stdin) fmt.Print("Who are you? Enter your name: ") text, _ := reader.ReadString('\n') if text == "Alice" || text == "Bob" { fmt.Printf("Hello, ", text) } else { fmt.Printf("You're not allowed in here!") } }
여기서 ReadString은 사용자 입력을 읽는 데 사용되며 이름은 개행 문자로 끝나야 합니다. 그러나 입력한 이름이 "Alice" 또는 "Bob"과 일치하면 프로그램이 잘못 액세스를 거부합니다.
원인 및 해결 방법
이 문제는 ReadString이 선행 항목을 보존하기 때문에 발생합니다. 구분 기호(이 경우 'n')입니다. "Alice"와 같은 이름을 입력하면 텍스트에 저장된 문자열에 "Alice"와 후행 줄 바꿈이 모두 포함됩니다. 이 추가 개행 문자는 문자열 비교가 예상 값과 일치하지 못하게 합니다.
이 문제를 해결하려면 다음 접근 방식을 고려하십시오.
위 내용은 Go의 `bufio.Reader.ReadString`이 선행 구분 기호를 유지하는 이유는 무엇이며 이 문제를 어떻게 피할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!