for 문 동작 원리
프로그램의 내부 동작은 비교와 반복이 거의 대부분을 차지한다고 해도 과언이 아닙니다. 이전에 비교문을 배웠으니 이제 반복문을 알아볼 차례입니다. Go언어에서는 C언어와는 다르게 while문이 없습니다. for문 만으로도 while문의 기능을 충분히 할 수 있기때문입니다. for문의 구조는 C언어와 매우 비슷하니 쉽게 이해가 되시리라 생각됩니다.
for 초기문; 조건문; 후처리 { 실행문 }
- 처음으로 초기문이 실행됩니다. for문 안에서 사용할 변수의 초기화를 해줍니다.
- 초기화한 변수를 특정 조건으로 비교하여 참이 되면 실행문이 실행됩니다.
- 실행문이 실행되고 나면 후처리 구문을 실행하는데, 보통은 초기문에서 사용한 변수의 값을 증가, 감소 시킵니다.
- 그리고 초기문은 더이상 실행되지 않고, 조건을 비교하고, 다시 실행문이 실행됩니다.
- 이 반복은 조건문이 거짓이 될 때까지 반복합니다.
pakage main import "fmt" func main() { for i := 0; i < 5; i++ { fmt.Println(i) } }
- i 를 0으로 초기화 한다. (i -> 0)
- i 가 5보다 작은가? -> true
- i 를 화면에 출력하고 줄바꿈한다.
- i 를 증가시킨다. (i -> 1)
- i 가 5보다 작은가? -> true
- i 를 화면에 출력하고 줄바꿈한다.
- i 를 증가시킨다. (i -> 2)
- i 가 5보다 작은가? -> true
- i 를 화면에 출력하고 줄바꿈한다.
- i 를 증가시킨다. (i -> 3)
- i 가 5보다 작은가? -> true
- i 를 화면에 출력하고 줄바꿈한다.
- i 를 증가시킨다.(i -> 4)
- i 가 5보다 작은가? -> true
- i 를 화면에 출력하고 줄바꿈한다.
- i 를 증가시킨다.(i -> 5)
- i 가 5보다 작은가? -> false
- for문 종료
for 문의 다양한 표현
// 초기문 생략 for ; 조건문; 후처리 { 실행문 } // 후처리 생략 for 초기문; 조건문; { 실행문 } // 조건문만 있는 경우 for ; 조건문; { 실행문 } // 조건문만 표기하는 경우 for 조건문 { 실행문 } // 무한루프 돌리기 1 - 실행문에 break 조건을 걸어 탈출 가능하게 만들어야 함 for true { 실행문 } // 무한루프 돌리기 2 - 실행문에 break 조건을 걸어 탈출 가능하게 만들어야 함 for { 실행문 }
continue와 break
- continue는 이후 실행문을 실행하지 않고, 후처리 구문을 실행하고 다음으로 넘어간다.
- break는 이후 실행문을 실행하지 않고, for문을 빠져나온다.
이중 for 문
for문 안에서 다시 for문으로 반복을 할 수 있습니다. 하지만 중첩된 for문을 너무 남용하게 되면 프로그램의 속도가 느려지게 되므로 이중for문, 삼중 for문을 사용할때는 고민을 많이 해서 사용해야한다.
package main import "fmt" func main() { // 구구단 출력 for i := 0; i < 9; i++ { a := i + 1 fmt.Println(a, " 단") for j := 0; j < 9; j++ { b := j + 1 fmt.Println(a, " X ", b, " = ", a * b) } fmt.Println() } }
Tucker의 Go 언어 프로그래밍 참조.
책을 보면서 공부한 내용을 정리하면서 작성하는 글입니다. 따라서, 주제 하나를 많은 시간을 들여서 쓰지 않고, 간단하게 작성하는 것부터 시작해서, 계속 다듬어가면서 업데이트해 나갈 생각입니다. 참고하는 자료가 있을 때마다 출처를 적어 놓겠습니다.