fmt.scan vs fmt.scanln
fmt.scan은 공간-분리 된 값을 읽습니다. 표준 입력에서 Newlines를 공간 문자로 취급합니다. 즉, 모든 인수가 채워 지거나 오류가 발생할 때까지 입력을 계속 구문 분석합니다. 반면에 Fmt.scanln은 표준 입력에서 읽지 만 Newline 문자를 종료 지점으로 기대합니다. 그 후의 입력은 구문 분석되지 않습니다.
예제
제공된 Go 코드에서 fmt.scanln을 사용하여 문자열을 읽을 때 문제가 발생합니다. 입력에는 fmt.scanln의 입력 끝을 트리거하는 Newline 문자가 포함됩니다. 그러나 후속 입력 캐릭터 "Everybody Loves Ice Cream"은 여전히 존재하며 후속 FMT.Scan에 의해 소비됩니다. Fmt.scan은 입력 끝에서 Newline을 기대하기 때문에 오류가 발생합니다.
대안
는 공백을 포함하고 새로운 라인으로 끝나는 텍스트 줄을 읽습니다. , bufio.reader의 readString 메소드 사용을 고려하십시오 :
"bufio"가져 오기 func main () { 독자 : = bufio.NewReader (OS.Stdin) line, err : = reader.String ( '\ n') }
import "bufio"
func main() {
reader := bufio.NewReader(os.Stdin)
line, err := reader.ReadString('\n')
}
fmt.scan 및 fmt.scanln의 뚜렷한 동작을 이해하는 것은 오류를 방지하고 기대에 맞는 코드를 작성하는 데 중요합니다. 텍스트 한 줄을 읽을 때 Bufio.reader 및 ReadString과 같은 대안은보다 명확하고 효율적인 솔루션을 제공합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3