> 백엔드 개발 > Golang > 이동 중에 공백을 사용하여 입력 받기

이동 중에 공백을 사용하여 입력 받기

Susan Sarandon
풀어 주다: 2024-12-06 19:26:12
원래의
840명이 탐색했습니다.

taking input with spaces in go

문맥

사용자에게 입력 수식을 요청하고 결과를 인쇄한 후 다음 수식을 다시 묻는 계산기 프로그램을 작성 중이었습니다.

문제

하지만 줄을 읽기 위해 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿