다음과 같이 1에서 10까지 숫자 옆에 짝수, 홀수 여부도 같이 출력되는 프로그램을 만들어보자.
1 2 3 4 5 6 7 8 9 10 | 1 odd 2 even 3 odd 4 even 5 odd 6 even 7 odd 8 even 9 odd 10 even | cs |
먼저 해당 숫자가 짝수인지 홀수인지 판명하는 방법이 필요하다. 가장 쉬운 방법은 2로 나눈 것이다. 만약 나머지가 없으면 짝수이고, 그렇지 않으면 홀수이다.
그다음 해당 조건에 입각해서 짝수, 홀수 여부에 따라 서로 다른 결과를 출력하는 명령문을 만든다. 대략 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 | if i % 2 == 0 { // even } else { // odd } | cs |
If 문은 조건 다음에 블록이 오는 형태가 for 문과 유사하다. 하지만 If 문에는 els;e 파트가 있다. If 문이 true 인 경우 조건문 다음 블록의 명령을 실행하게 되고, 그렇지 않은 경우에는 해당 블록은 건너뛰거나 else 문이 있으면 그 블록안의 명령을 실행한다.
If 문은 else if 파트도 포함할 수 있다. 다음을 보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | if i % 2 == 0 { // divisible by 2 } else if i % 3 == 0 { // divisible by 3 } else if i % 4 == 0 { // divisible by 4 } | cs |
조건은 위에서 아래 방향으로 그 부합여부를 따져보게 된다. 위의 예에서 8을 i 값으로 입력한 경우, 8은 2와 4 모두 나눠서 나머지가 0 이지만, 위에서 아래로 실행하다보니, // divisible by 4 블록은 절대 실행될 일이 없다.
이상의 내용을 합쳐보면 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | package main import "fmt" func main() { for i := 1; i <= 10; i++ { if i % 2 == 0 { fmt.Println(i, "even") } else { fmt.Println(i, "odd") } } } | cs |
다음과 같이 실행되는 셈이다.
int 타입의 변수 i 를 생성해, 초기값 1을 부여한다.
i 가 10보다 작거나 같은가? Yes
블록으로 진입해 코드를 실행한다.
i 를 2로 나눈 나머지가 0인가? No
else 블록 진입
i odd 출력
i 값을 1 증가시킨다
i 가 10보다 작거나 같은가? Yes
블록으로 진입해 코드를 실행한다.
i 를 2로 나눈 나머지가 0인가? No
if 블록 진입
i even 출력
…
실행결과는 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 | ~/go/src/golang-book/chapter5# go run main.go 1 odd 2 even 3 odd 4 even 5 odd 6 even 7 odd 8 even 9 odd 10 even | cs |
'프로그래밍 Programming' 카테고리의 다른 글
Go 언어 입문 - Control Structures - Array (golang-book) (0) | 2018.09.01 |
---|---|
Go 언어 입문 - Control Structures - Switch (golang-book) (0) | 2018.08.31 |
Go 언어 입문 - Control Structures - For (golang-book) (0) | 2018.08.31 |
Go 언어 입문 - Variables (golang-book) (0) | 2018.08.28 |
Go 언어 입문 - Types - Booleans (golang-book) (0) | 2018.08.28 |