1에서 시작하여 10까지 카운팅하는 프로그램을 만들어보자. 지금까지 배운 지식으로는 다음과 같이 작성할 수 있을 것이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package main import "fmt" func main() { fmt.Println(1) fmt.Println(2) fmt.Println(3) fmt.Println(4) fmt.Println(5) fmt.Println(6) fmt.Println(7) fmt.Println(8) fmt.Println(9) fmt.Println(10) } | cs |
또는 다음과 같이 표현할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package main import "fmt" func main() { fmt.Println(`1 2 3 4 5 6 7 8 9 10`) } | cs |
실행결과는 다음과 같이 동일하다.
1 2 3 4 5 6 7 8 9 10 11 | ~/go/src/golang-book/chapter5# go run main.go 1 2 3 4 5 6 7 8 9 10 | cs |
두 방식 모두 지루하기 짝이 없다. 이제 알아야할 것은 같은 작업을 어떻게 반복시키느냐이다.
For
for 문은 명령문을 반복해서 실행가능하도록 해준다. 앞선 프로그램을 다음과 같이 간략히 표현할 수 있다.
1 2 3 4 5 6 7 8 9 10 | package main import "fmt" func main() { i := 1 for i <= 10 { fmt.Println(i) i = i + 1 } } | cs |
먼저 출력하기를 원하는 숫자를 저장하기 위한 변수 i 를 생성한다. 그리고 for 키워드를 활용하여 loop 문을 만든다. loop 문은 다음과 같이 작동한다.
i <= 10 ("10보다 작거나 같은 i”)에 대해 만약 true 로 평가되면, 해당 블록 안의 문장을 실행한다. 그렇지 않으면 프로그램의 다음 문장으로 넘어간다. 위의 코드의 경우 더 이상 실행할 문장이 없어 종료된다. 그리고 블록 안의 문장이 실행되고 나면 다시 처음으로 돌아가 반복하게 된다.
i = i + 1 라인이 특히 중요한데, 만약에 해당 라인이 없다면 i <= 10 은 항상 true 로 평가될 것이고, 프로그램은 절대 끝나지 않기 때문이다. 다음과 같이 진행되는 셈이다.
1이라는 값을 가지는 변수 i 를 만든다.
i <= 10 ? Yes
i 를 출력한다.
i 에 1을 더한다 (이제 i 는 2가 된다)
i <= 10? Yes.
i 를 출력한다.
…
i <= 10? No.
해당 사항이 없으니 종료.
다른 프로그램 언어에는 while, do, until, foreach 등 여러가지 루프문이 존재하지만, Go 는 이 하나를 가지고 다양하게 활용한다. 위의 프로그램은 다음과 같이 작성가능하다.
1 2 3 4 5 6 7 8 9 | package main import "fmt" func main() { for i := 1; i <= 10; i++ { fmt.Println(i) } } | cs |
세미콜론을 가진 2개의 다른 명령문이 포함되었음을 알 수 있다. 먼저 변수를 초기화하고, 각각의 조건 부합여부를 체크하고, 마지막으로 변수를 증가시킨다.
'프로그래밍 Programming' 카테고리의 다른 글
Go 언어 입문 - Control Structures - Switch (golang-book) (0) | 2018.08.31 |
---|---|
Go 언어 입문 - Control Structures - If (golang-book) (0) | 2018.08.31 |
Go 언어 입문 - Variables (golang-book) (0) | 2018.08.28 |
Go 언어 입문 - Types - Booleans (golang-book) (0) | 2018.08.28 |
Go 언어 입문 - Types - Strings (golang-book) (0) | 2018.08.28 |