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