이 글은 골든래빗 《Tucker의 Go 언어 프로그래밍》의 05장 써머리입니다.
05 fmt 패키지를 이용한 텍스트 입출력
5.1 표준 입출력
5.1.1 fmt 패키지
Go 에서는 fmt 패키지를 사용해 표준 입출력 처리를 한다.
- fmt패키지는 3가지 표준 출력용 함수를 제공한다.
함수명 | 기능 |
---|
Print() | 입력값 출력 |
Println() | 입력값 출력 후 개행 |
Printf() | format에 맞추어 입력값 출력 |
5.1.2 서식 문자
Printf()
함수는 다음과 같은 형식으로 사용한다.
- Printf(서식문자열, 인수1, 인수2, ...)
구분 | 설명 |
---|
%v | 데이터 타입에 맞춰 기본 형태로 출력한다(개인적으로 로그찍을때 많이 사용중) |
%T | 데이터 타입 출력(개인적으로 가끔 로그찍을때 사용) |
%t | 불리언타입 |
%d | 10진수 정수 |
%b | 2진수 |
%c | 유니코드 |
%o | 8진수 |
%O | 8진수(Oo prefix) |
%x | 16진수(0-9a-f) |
%X | 16진수(0-9A-F) |
%e %E | 지수 형태로 실수 출력(ex -1.234456e+78) |
%f %F | 지수 형태가 아닌 실수 출력(ex 123.456) |
%g %G | 값이 큰 실수값은 지수형태(%e)로 출력, 작은 실수는 그대로(%f) 출력 |
%s | 문자열 출력 |
%q | 특수문자 기능 무시하고 출력 |
%p | 주소값 출력 |
5.1.3 최소 출력 너비 지정(일반적으로 사용할 일이 없을듯)
- 최소 출력 너비 지정
- 서식 문자의 %와 타입을 나타내는 문자 사이에 숫자를 넣어 너비를 지정할 수 있다.
- %5d
: 최소 5칸을 사용해 정수값 출력
- 공란 채우기 : 너비 앞에 0을 붙이면 빈자리를 0으로 채운다(0만 가능).
- %05d
: 최소 5칸을 사용, 우정렬, 빈칸에 0을 채운다
- 왼쪽 정렬하기
- %-05d
: 최소 5칸을 사용, 좌정렬, 빈칸채우기 없음(우측은 0이 들어가면 숫자가 달라져서 그렇단다)
5.1.4 실수 소수점 이하 자릿수
- %f : 실수 출력
- %5.2f : 최소너비 5칸, 소수점 이하 2개
- %g : 실수를 정수부와 소수점 이하 숫자를 포함해 출력 숫자 제한
- %5.3g : 기본 숫자길이 6, 최소너비 5칸, 소수점 이하 포함해 총 숫자 3개로 표현
5.1.5 특수문자
5.2 표준 입력
함수 | 기능 |
---|
Scan() | 표준 입력에서 값을 입력 받음 |
Scanf() | 표준 입력에서 서식 형태로 값을 입력 받음 |
Scanln() | 표준 입력에서 한 줄을 읽음 |
5.2.2 Scan()
package main
import "fmt"
func main() {
var a int
var b int
if n, err := fmt.Scan(&a, &b); err != nil {
fmt.Println(n, err)
} else {
fmt.Println(n, a, b)
}
}
5.2.3 Scanf()
package main
import "fmt"
func main() {
var a int
var b int
if n, err := fmt.Scanf("%d %d\n", &a, &b); err != nil {
fmt.Println(n, err)
} else {
fmt.Println(n, a, b)
}
}
5.2.4 Scanln()
- 마지막 입력값 이후 반드시
enter
로 입력 종료해야함!
package main
import "fmt"
func main() {
var a int
var b int
if n, err := fmt.Scanln(&a, &b); err != nil {
fmt.Println(n, err)
} else {
fmt.Println(n, a, b)
}
}
5.3 키보드 입력과 Scan() 함수의 동작 원리
핵심 요약
- fmt 패키지를 사용하여 표준 입출력을 할 수 있다.
- 표준 출력 함수로 Print() Printf() Println() 이 있다.
- 서식 문자 %v를 사용하면 모든 타입의 기본 서식으로 출력
- 표준 입력 함수로 Scan() Scanf() Scanln()이 있다.
- 입력받을 때 에러가 발생하면 표준 스트림을 지우자(책 5.3 참고)