[go] Go 언어로 텍스트 데이터를 입력받는 방법

Go 언어는 텍스트 데이터를 입력받고 처리하는 기능을 제공합니다. 이번 글에서는 Go 언어로 텍스트 데이터를 입력받는 방법을 알아보겠습니다.

표준 입력 사용하기

가장 간단한 방법은 fmt 패키지의 Scanln 함수를 사용하여 표준 입력에서 데이터를 읽는 것입니다. 아래 예제 코드를 살펴보세요.

package main

import "fmt"

func main() {
    var input string
    fmt.Print("텍스트 데이터를 입력하세요: ")
    fmt.Scanln(&input)
    fmt.Println("입력받은 데이터:", input)
}

위 코드는 사용자로부터 텍스트 데이터를 입력받아 출력하는 간단한 예제입니다. fmt.Scanln() 함수를 사용하여 입력받은 데이터를 변수에 할당하고, 이를 출력하도록 하였습니다.

bufio 패키지 사용하기

bufio 패키지를 사용하면 좀 더 복잡한 입력 처리를 할 수 있습니다. 아래 예제 코드는 bufio 패키지를 사용하여 여러 줄의 텍스트 데이터를 입력받고 처리하는 예제입니다.

package main

import (
    "bufio"
    "os"
    "fmt"
)

func main() {
    reader := bufio.NewReader(os.Stdin)

    fmt.Println("텍스트 데이터를 입력하세요 (종료하려면 빈 줄을 입력하세요):")
    for {
        line, err := reader.ReadString('\n')
        if err != nil {
            fmt.Println("입력 에러:", err)
            return
        }

        line = line[:len(line)-1] // 개행 문자 제거
        if line == "" {
            break
        }

        fmt.Println("입력받은 데이터:", line)
    }
}

위 코드에서는 bufio.NewReader() 함수를 사용하여 표준 입력을 reader 변수에 할당하고, ReadString() 함수를 사용하여 여러 줄의 데이터를 입력받습니다. 빈 줄을 입력할 때까지 계속해서 데이터를 입력받으며, 입력받은 데이터를 처리하는 로직을 구현하였습니다.

파일에서 데이터 읽기

Go 언어는 파일에서 직접 데이터를 읽을 수도 있습니다. os.Open() 함수를 사용하여 파일을 연 후, bufio.NewReader() 함수를 사용하여 파일의 내용을 읽을 수 있습니다. 아래 예제 코드는 파일에서 데이터를 읽어오는 예제입니다.

package main

import (
    "bufio"
    "os"
    "fmt"
)

func main() {
    file, err := os.Open("data.txt")
    if err != nil {
        fmt.Println("파일 열기 에러:", err)
        return
    }
    defer file.Close()

    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        line := scanner.Text()
        fmt.Println("파일에서 읽은 데이터:", line)
    }

    if err := scanner.Err(); err != nil {
        fmt.Println("파일 읽기 에러:", err)
        return
    }
}

위 코드에서는 os.Open() 함수를 사용하여 data.txt 파일을 열고, bufio.NewScanner() 함수를 사용하여 파일의 내용을 읽어오는 scanner 변수를 생성합니다. scanner.Scan() 함수를 사용하여 파일에서 한 줄씩 데이터를 읽어오고, 이를 처리하는 로직을 구현하였습니다.

결론

Go 언어는 텍스트 데이터를 입력받는 다양한 방법을 제공합니다. fmt 패키지의 Scanln 함수를 사용하면 간단하게 표준 입력에서 데이터를 입력받을 수 있고, bufio 패키지를 사용하면 좀 더 복잡한 입력 처리를 할 수 있습니다. 또한, 파일에서 데이터를 읽어오는 기능도 제공되므로 필요에 따라 편리하게 사용할 수 있습니다.

더 자세한 내용은 Go 언어 공식 문서, Effective Go 등을 참고하시기 바랍니다.