프로그래밍 언어 공부의 두 번째 단계는 입력이다.
적어도 입력, 출력만 할 줄 알아도 "그대로 출력하기"와 같은 알고리즘 문제는 풀 수 있다! (사실 EOF처리를 하는 방법도 배워야 할 것이다!)
앞서 공부했던 "fmt" 패키지에서 제공하는 입력 함수 세 가지에 대해 공부해보자.
Scanf 함수
C언어의 scanf 함수와 매우 비슷해서 처음 함수를 사용할 때도 익숙하게 사용할 수 있었다. format 지정자를 통해 정해진 형식의 입력을 받을 수 있게 해주는 함수이다. 간단하게 예제만 보고 넘어가도 괜찮을 것 같다.
예제 코드)
package main
import "fmt"
func main() {
var age int
var name string
fmt.Print("이름과 나이를 띄어쓰기로 구분하여 입력 : ")
fmt.Scanf("%s %d", &name, &age)
fmt.Printf("이름 : %s\n나이 : %d\n", name, age)
}
**참고 : VS Code에서 Go의 콘솔 입력이 잘 되지 않는 경우가 있다. 이 경우에는 위 사진처럼 콘솔 창에서 직접 실행시켜주면 해결된다.
매개 변수로 입력받을 변수의 주소 값을 넣어주는 것 또한 C언어와 같은 방식이다.
C언어의 scanf와 매우 유사하여 따로 공부할 내용이 없는 것 같다.
Scan 함수
Go의 Scan 함수는 데이터를 입력받을 때 공백과 개행 입력(엔터)으로 구분할 수 있다고 한다.
예를 들어 네 개의 입력을 받으면 네 번 다 엔터를 통해 입력을 받을 수도 있고, 두 개씩 입력하여 두 번만 엔터를 통해 입력을 받을 수도 있다. 예제를 만들어 보는 게 머리에 잘 들어올 것 같다.
예제 코드)
package main
import "fmt"
func main() {
var age int
var name string
//Scan
fmt.Print("이름과 나이를 띄어쓰기로 구분하여 입력 : ")
fmt.Scan(&name, &age)
fmt.Printf("이름 : %s\n나이 : %d\n", name, age)
}
엔터나 공백을 만나면 하나의 입력이 끝났다고 알고 다음 변수에 입력을 받는다.
3. Scanln 함수
C언어의 scanf("%s") 구문과 비슷하다고 생각하면 이해하기 편하다.
띄어쓰기로만 구분이 가능하고 잘못 사용하면 입력을 받지 못하고 코드를 지나가는 상황이 올 수도 있다.
예제 코드)
package main
import "fmt"
func main() {
var age int
var name string
//Scanln
fmt.Print("이름과 나이를 띄어쓰기로 구분하여 입력 : ")
fmt.Scanln(&name, &age)
fmt.Printf("이름 : %s\n나이 : %d\n", name, age)
}
Scanln 함수는 두 개의 입력을 받는 상황에서 한 개만 입력 후 엔터를 입력하면 두 번째 입력에 해당하는 변수에는 입력을 받지 않고 다음 코드를 수행하게 된다.
Go언어의 숨은 강점(?)을 여기서 볼 수 있다. 변수의 초기화 과정이 없는데 age변수는 0으로 초기화되어있다는 것이다! (사실 많은 프로그래밍 언어가 지원하는 기능이다.)
Go언어 입력 함수에 대한 공부는 여기서 마친다.
이제 자료형, 반복문, 조건문, 메모리 할당만 공부하면, 백준 문제를 꾸준히 풀 수 있을 것 같다.
그렇게 Go언어를 익숙하게 다루게 되면, 여러 가지 모듈로 많은 프로젝트도 해보고 싶군..
소스코드는 깃허브를 참고.
'Computer_Language > GO' 카테고리의 다른 글
[Go] 5. Go(golang)의 반복문 (0) | 2019.09.23 |
---|---|
[Go] 4. Go(golang)의 자료형과 변수 선언 (0) | 2019.09.11 |
[Go] 2. Go(Golang)의 출력 함수 (print) (0) | 2019.08.30 |
[Go] 1. Go Language(Golang)에 대하여 (0) | 2019.08.30 |
[Go] Go(Golang) 윈도우 개발 환경 구축하기 (0) | 2019.08.27 |