Go에서 fmt.Scanln을 사용하여 공백으로 구분된 문자열을 구문 분석하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-04 01:58:01
원래의
510명이 탐색했습니다.

How to Parse Space-Separated Strings with fmt.Scanln in Go?

fmt.scanln을 사용하여 공백으로 구분된 문자열을 구문 분석하는 방법

fmt.scanln은 표준 입력에서 입력을 읽고 스캔하는 데 사용되는 함수입니다. 구조화된 변수로 변환합니다. 그러나 공백으로 구분된 문자열을 읽을 때 예상치 못한 동작이 발생할 수 있습니다.

기본적으로 fmt.scanln은 첫 번째 개행 문자에서 스캔을 중지합니다. 이로 인해 사용자가 공백으로 구분된 여러 단어가 포함된 문자열을 입력했지만 첫 번째 단어만 캡처되는 상황이 발생할 수 있습니다.

예를 들어 다음 코드를 고려하세요.

<code class="go">package main

import "fmt"

func main() {
    var s string
    fmt.Scanln(&s)
    fmt.Println(s)
    return
}</code>
로그인 후 복사

사용자가 "월 31일"을 입력하면 "31"만 s 변수에 캡처됩니다. 이는 fmt.scanln이 공백 문자인 공백 문자를 발견한 후 스캔을 중지하기 때문에 발생합니다.

이 문제를 해결하고 공백으로 구분된 여러 단어를 캡처하려면 다음 중 하나를 수행할 수 있습니다.

  1. 다중 fmt.Scanln 문 사용:

    • 이 방법에는 fmt.Scanln을 여러 번 호출하여 각 단어를 개별적으로 캡처하는 작업이 포함됩니다.
    <code class="go">package main
    
    import "fmt"
    
    func main() {
        var s1 string
        var s2 string
        fmt.Scanln(&s1, &s2)
        fmt.Println(s1)
        fmt.Println(s2)
        return
    }</code>
    로그인 후 복사
  2. 버퍼 스캐너 사용:

    • 이 대안은 버퍼 스캐너를 사용하여 전체 입력 줄을 읽은 다음 공백으로 구분된 단어.
    <code class="go">package main
    
    import (
        "bufio"
        "fmt"
        "os"
    )
    
    func main() {
        scanner := bufio.NewScanner(os.Stdin)
        for scanner.Scan() {
            s := scanner.Text()
            fmt.Println(s)
        }
        if err := scanner.Err(); err != nil {
            os.Exit(1)
        }
    }</code>
    로그인 후 복사

위 내용은 Go에서 fmt.Scanln을 사용하여 공백으로 구분된 문자열을 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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