프로그램과 사용자는 입력과 출력을 통해서 상호작용을 한다. 이때 운영체제가 제공하는 표준 입출력 스트림(standard input/output stream)을 사용하면 프로그램 내부에서 입력과 출력을 간편하게 처리할 수 있다. Go 언어에서는 fmt 패키지를 사용해서 간편하게 표준 입출력 처리를 할 수 있다.

fmt 패키지

Go 언어는 자주 사용하는 기능을 묶어서 패키지로 제공한다. fmt 패키지에서 표준 입출력 기능을 제공한다는 것이다.

패키지를 사용하려면 import를 사용해서 사용한 패키지를 불러와야 한다.

import "fmt"
Print() 함수 입력값들을 출력한다.
Println() 함수 입력값들을 출력하고 개행한다.
Printf() 서식(format)에 맞도록 입력값들을 출력한다.
package main

import "fmt"

func main() {
	var a int = 10
	var a int = 20
	var f float64 = 32799438743.8297
	
	fmt.Print("a:", a, "b:", b)
	fmt.Println("a:", a, "b:", b, "f:", f)
	fmt.Printf("a: %d b: %d f:%f\\n", a, b, f)
}

OUTPUT : 
a:10b:20a: 10 b: 20 f: 32799438743.8297
a: 10 b: 20 f: 32799438743.8297

서식 문자

구분 설명
%w 데이터 타입에 맞춰서 기본 형태로 출력
%T 테이터 타입 출력
%t 불리언을 true/false로 출력
%d 10진수 정숫값으로 출력(정수 타입만 가능)
%b 2진수로 출력
%c 유니코드 문자를 출력(정수 타입만 가능)
%o 8진수로 출력
%O 앞에 8진수임을 표시하는 0o를 붙여서 8진수로 값을 출력
%x 16진수로 값을 출력, 10 이상의 값을 a-f 소문자로 표시
%X 16진수로 값을 출력, 10 이상의 값을 A-F 대문자로 표시
%e %E 지수 형태로 실숫값을 출력(실수 타입만 가능)
%f %F 지수 형태가 아닌 실숫값 그대로 출력(실수 타입만 가능)
%g %G 값이 큰 실숫값은 지수 형태(%e)로 출력하고, 작은 실숫값은 실숫값 그대로(%f) 출력
%s 문자열을 출력
%q 특수 문자 기능을 동작하지 않고 문자열 그대로 출력
%p 메모리 주솟값을 출력

특수 문자

\n 줄바꿈
\t 탭을 삽입
\\ \ 자체를 출력
\” “를 출력, 큰따옴표로 묶인 문자열 내부에 따옴표를 넣을 때 사용

표준 입력은 표준 입력 장치에서 데이터를 얻어온다. 일반적으로 표준 입력을 변경하지 않았다면 키보드가 표준 입력 장치이다.

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

실습을 하기 위해면 모듈과 빌드를 만들어주어야 한다.

package main

import "fmt"

func main() {
	var a int
	var b int
	
	n, err := fmt.Scan(&a, &b)
	n, err := fmt.Scanf("%d %d\\n", &a, &b)
	n, err := fmt.Scanln(&a, &b)
	if err != nil {
		fmt.Println(n, err)
	} else {
		fmt.Println(n, a, b)
	}
}