Programming Language/go

Go 언어 프로그래밍 - fmt 패키지를 이용한 표준 입출력

김크리 2021. 7. 5. 21:50

표준 입출력(Standard Input/Output)

표준 출력 함수

go 언어에서는 fmt 패키지에서 표준 출력함수를지원한다.

print() 함수 입력값들을 출력합니다.
println() 함수 입력값들을 출력하고 개행합니다.(new line)
printf() 서식(format)에 맞게 함수 입력값들을 출력합니다.

ex5.2.go

package main

import "fmt"

func main() {
	var a int = 10
	var b int = 20
	var f float64 = 32323.123123000001

	fmt.Print("a : ", a, ",b: ", b, ",f : ", f)
	fmt.Println("a : ", a, ",b : ", b, ",f : ", f)
	fmt.Printf("a: %d, b: %d, f:%f \n", a, b, f)
}

 

표준 입력 함수

go 언어에서는 fmt 패키지에서 표준 입력함수를지원한다.

Scan() 표준 입력에서 값을 입력받습니다.
Scanf() 표준 입력에서 서식 형태로 값을 입력받습니다.
Scanln() 표준 입력에서 한 줄을 읽어서 값을 입력받습니다.

ex5.3.go

package main

import "fmt"

func main() {
	var a int
	var b int

	n, err := fmt.Scanln(&a, &b)
	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Println(n, a, b)
	}
}

fmt.Scanln/Scanf/Scan 함수의 경우, n과 err 값을 같이 가지고 있다.

오류 발생시 err 값이 존재하게 된다.

실행결과는 아래와 같다.

 

입력 버퍼(Input Buffer)

표준입력/표준출력은 Bit Stream의 형식으로 출력되며 0,1로 진행이 된다.

Bit stream 형식으로 입력되는 값이 저장 되는 공간을 버퍼라고 한다.

package main

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

func main() {
	stdin := bufio.NewReader(os.Stdin)
	//os package 내의 standard input

	var a int
	var b int

	n, err := fmt.Scanln(&a, &b)
	if err != nil {
		fmt.Println(err)
		stdin.ReadString('\n') //표준 입력버퍼에서 '\n' 문자가 나올때까지 읽기 - 버퍼를 끝까지 읽어 비운다
	} else {
		fmt.Println(n, a, b)
	}

	n, err = fmt.Scanln(&a, &b)
	if err != nil {
		fmt.Println(err)
		stdin.ReadString('\n') //표준 입력버퍼에서 '\n' 문자가 나올때까지 읽기 - 버퍼를 끝까지 읽어 비운다
	} else {
		fmt.Println(a, b)
	}
}

참고

Tucker의 Go언어 프로그래밍 - Go가 온당 5장

https://www.youtube.com/watch?v=g4PyJ10CSr0&list=PLy-g2fnSzUTBHwuXkWQ834QHDZwLx6v6j