go언어 반복문 - 무한루프, C언어의 while문구현

Posted by 뭐든지 열심히 잘하는 곰도리네
2017.11.24 13:15 Computing&IT/프로그래밍 - golang

go언어의 반복문 (looping control)을 알아봅시다.



go언어는 모든 것을 for문으로 작성한다고 보시면 됩니다.


C언어의 경우 for문, while문, do while문을 제공합니다만


go언어는 언어 스펙의 간결성을 위하여 while과 do while을 제거해버렸습니다.


for만으로도 다 됩니다.


주로 많이 쓰이는 반복문의 예제 몇개를 보시면 감을 잡을 수 있습니다.


우선 for문을 살펴봅시다.


go언어에서 for문의 표현은 아래와 같이 합니다.

for 초기값 ; 조건식 ; 변화식 {
    블라블라
}

C언어나 java를 다뤄보신 분이라면 별다른 어려움없이 읽힐겁니다.


그럼 몇가지 for를 이용한 반복문을 살펴보겠습니다.




1. 무한루프


서버프로그래밍 등에서 많이 쓰이는 무한루프입니다.


for문 안의 블록을 무한히 수행합니다.

for {
    블라블라
}

간단하죠? 작동원리를 봅시다.


초기값없으니 무시되고, 조건식도 없으니 늘 true를 반환하고, 변화식도 없으므로 없던 초기값도 그냥 계속 없는겁니다.


그럼 이렇게 해도 무한루프는 돌아가겠네요.



2. C언어의 while 문을 go언어 for로 구현하기


위의 무한루프는 문제가 있습니다. 시스템 상황에 상관없이 계속 실행된다는 것인데 루프문을 빠져나갈 방법이 없네요.


그래서 state 라는 변수에 상태값을 줘서 ( 상태값 0 : 종료, 그외: 루프실행) loop를 컨트롤하고 싶습니다.


C언어라면 while (state != 0) {...} 으로 구현가능하겠죠.


go언어는 이를 for로 구현해야 합니다. 기본적인 문법예는 아래와 같습니다.

for 조건식 {
    블라블라
}

즉, 초기값없이 조건식만 적어서 for문을 작성할 수도 있습니다. 예제를 한번 볼까요?



state := 1
for state != 0 {
   블라블라...
   어떤 조건에서는 state = 1
}

이렇게하면 state값의 변화에 따라 루프 제어가 가능해집니다.



이렇게 go언어는 for만으로 반복문을 작성합니다.



이 댓글을 비밀 댓글로

티스토리 툴바