본문 바로가기
Go

Scan, Scanf, Scan 차이 정리

by Justin입니다. 2025. 6. 3.

 

1. fmt.Scan

- 입력 구분자: 공백 문자(스페이스, 탭, 개행 모두)

- 입력 종료: 변수 개수만큼 입력받으면 종료

- 버퍼 내 개행 문자 처리

중간 개행(줄바꿈)은 구분자 역할로 자동 버려짐

마지막 개행 문자는 버퍼에 남아있음

n, err := fmt.Scan(&a, &b)

입력:

3 5<Enter> 

- 마지막 <Enter>는 입력 버퍼에 남아있음

 

입력

3<Enter>

5<Enter>

- 중간 <Enter>는 버려지고, 마지막 <Enter>는 버퍼에 남음

 

2. fmt.Scanf

- 입력 구분자: 형식 문자열에 따라 정확히 매칭

- 입력 종료: 형식 문자열에 맞게 입력이 완료되어야 종료

- 버퍼 내 개행 문자 처리:

형식에 맞는 개행문자 \n 는 버퍼에서 제거(버려짐)

예를들어 "%d %d\n" 에서 마지막 \n은 입력 버퍼에서 소비됨

n, err := fmt.Scanf("%d %d\n", &a, &b)

입력:

3 5<Enter>

- <Enter>는 버퍼에서 버려짐

 

3. fmt.Scanln

- 입력 구분자: 공백 문자(스페이스, 탭)

- 입력 종료: 개행 문자(중바꿈)을 만나면 입력 종료

- 버퍼 내 개행 문자 처리:

입력 종료 시 개행 문자는 버퍼에서 제거(버려짐)

n, err := fmt.Scanln(&a, &b)

입력: 

3 5<Enter>

- <Enter>는 버퍼에서 버려짐

 

'Go' 카테고리의 다른 글

append 함수  (0) 2025.06.08
Go의 구조체  (0) 2025.06.08
Hello Go World 코드  (0) 2025.06.03