사용자에게 입력 수식을 요청하고 결과를 인쇄한 후 다음 수식을 다시 묻는 계산기 프로그램을 작성 중이었습니다.
하지만 줄을 읽기 위해 fmt.Scanln()을 사용할 때(공백 및 탭과 같은 공백 문자 포함) 문제가 발생했습니다!
공백 문자(예! 개행 문자가 아니라 공백 문자)가 나타나면 읽기를 중단했습니다.
예:
입력: 2 3.5(5)
획득: 2
그런데 더 심한 말이 있어요!
입력의 나머지 문자는 그대로 남아 있으며 Scanln() func을 다시 호출하면 해당 문자를 읽습니다.
fmt 패키지에는 Scanf()라는 또 다른 기능이 있습니다.
이 사람은 달라요!
형식 지정자를 기반으로 입력을 받아 우리가 제공한 변수에 저장합니다.
코드:
text := "" fmt.Println("Enter expression:") for { var temp rune fmt.Scanf("%c", &temp) if temp == '\n' { break } text += string(temp) } fmt.Printf("You entered:\n %v", text)
설명:
1."Enter 표현식:"을 인쇄합니다.
2.루프 시작
3.이제 루프는 사용자로부터 char 단위로 입력을 받습니다(rune by rune in go)
5.그리고 각 반복에서 해당 룬을 가져와 추가하거나 텍스트 변수에 추가합니다.
6.'n'을 읽으면 루프가 중단되고 text 변수
내에 입력 줄이 표시됩니다.
7.여기서 룬은 공백문자일 수도 있습니다.
그래서 문자 그대로 'n'까지 읽습니다.
(공간 문자를 읽는 것은 Scanf("%c",&var_name)의 예외이며 우리가 원하는 것입니다!)
참고: 한 줄 이상 읽을 때 발생하는 문제도 해결합니다. 즉, 한 줄 이상 읽을 때 예상치 못한 입력이나 동작이 발생한다는 뜻입니다(정확한 내용은 모르겠습니다). 이유!).
하지만 여기서는 'n'도 포함하여(temp var에) 문자별로 읽기 때문에 이러한 오류가 모두 제거됩니다!
위 내용은 이동 중에 공백을 사용하여 입력 받기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!