가장 빨리 만나는 Go 언어 Unit 17. for 반복문 사용하기

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

for 반복문 사용하기

이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07

Go 언어는 C, C++와는 달리 반복문이 for만 있습니다.

  • for 초깃값; 조건식; 변화식 { }
for 초깃값; 조건식; 변화식 {
	// 여기에 반복할 코드를 작성합니다.
}

간단하게 숫자 0부터 4까지 출력해보겠습니다.

for i := 0; i < 5; i++ {
         fmt.Println(i)
}
실행 결과
0
1
2
3
4

C, C++ 등의 for 반복문과 동일합니다. 단, 반복문을 작성할 때 ( ) (괄호)를 사용하지 않으며 반복문을 시작하는 줄에서 { (여는 중괄호)가 시작됩니다.

  • 초깃값: 반복문이 시작할 때 기준이 되는 값입니다. 바깥에서 변수를 선언하여 사용할 수도 있고, :=를 사용하여 변수를 바로 생성하여 사용할 수도 있습니다. :=로 변수를 생성했다면 for 반복문 안에서만 접근할 수 있습니다.
  • 조건식: 조건식의 결과가 참(true)일 때만 중괄호 블록을 반복합니다. 따라서 조건식의 결과는 반드시 불형이되어야 합니다. C 언어와 달리 조건식의 결과가 정수형, 실수형, 문자열 값 등이 되면 컴파일 에러가 발생합니다.
  • 변화식: 중괄호 블록이 한 번 실행된 뒤에 변화할 식을 설정합니다.

여기서는 초깃값에 0을 대입한 뒤 조건식을 i < 5로 지정하여 i가 5보다 작을 때까지만 반복하도록 하였습니다. 그리고 변화식에는 i++을 지정하여 반복할 때마다 i가 1씩 증가하도록 하였습니다. 따라서 i가 5가 되면 조건식은 거짓이 되므로 반복문이 끝납니다.

다음과 같이 여는 중괄호를 다음 줄에 작성하면 컴파일 에러가 발생합니다.

for i := 0; i < 5; i++ // 컴파일 에러
{
         fmt.Println(i)
}

마찬가지로 중괄호를 생략해도 컴파일 에러가 발생합니다.

for i := 0; i < 5; i++ // 컴파일 에러
         fmt.Println(i)

변화식에 --을 사용하면 감소 형태로 반복문을 실행할 수도 있습니다. 이번에는 숫자 5부터 1까지 출력해보겠습니다.

for i := 5; i > 0; i-- {
	fmt.Println(i)
}
실행 결과
5
4
3
2
1

여기서는 초깃값에 5을 대입한 뒤 조건식을 i > 0으로 지정하여 i가 0보다 클 때까지만 반복하도록 하였습니다. 그리고 변화식에는 i--을 지정하여 반복할 때마다 i가 1씩 감소하도록 하였습니다. 따라서 i가 0이 되면 조건식은 거짓이 되므로 반복문이 끝납니다.

for 키워드에 조건식만 설정하면 C, C++의 while 키워드처럼 동작합니다. 이때는 초깃값을 바깥에서 선언해주고, 변화식은 중괄호 블록 안에서 처리합니다.

  • for 조건식 { 변화식 }
// 초깃값을 먼저 선언합니다.
for 조건식 {
	// 여기에 반복할 코드를 작성합니다.
	// 변화식도 함께 작성합니다.
}

이때는 조건식이 참일 때만 동작합니다. 만약 변화식이 없다면 반복문이 끝나지 않으므로 주의합니다(무한 루프).

for 반복문에 조건식만 사용하여 숫자 0부터 4까지 출력해보겠습니다.

i := 0
for i < 5 {
	fmt.Println(i)
	i = i + 1 // i++
}
실행 결과
0
1
2
3
4

다음과 같이 for 키워드에 조건식을 설정하지 않으면 무한 루프가 됩니다.

  • for { }
for {
	fmt.Println("Hello, world!")
}

즉 조건식을 설정하지 않거나, 조건식이 있더라도 변화식이 없다면 반복문이 끝나지 않는 무한 루프가 됩니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

2015-06-01