728x90

프로그래밍을 할 때 반복해야하는 때가 있다.

이 때 사용하는게 반복문이다.

근데 Go에서는 반복문은 오직 for문뿐이다.

whild? do-while? foreach? repeat?

어떤것도 없다. 오직 for뿐이다.

예제로 보도록하자.

package main

import "fmt"

func main() {
sum := 0
for i := 0; i <= 10; i++ {
sum += i
}
fmt.Print("합계는 ", sum, "입니다.\n")
}

의 예제는 for문을 쓰는 예제이다.

아직 설명한적 없는데 sum은 int이므로 문자열과 합칠 수 없다. 따라서 문자열로 변환시켜주는데 이를 타입캐스팅이라고한다.

sum을 string으로 타입캐스팅 시켜준다.

이는 과거에 float형으로 출력하기 위해서 했던 방식과 동일한것이다.(정수끼리의 나눗셈으로 실수를 표현하는 예제 참고)

for문의 사용 양식을 대략적으로 볼 수 있다.


for <초기화>;<조건>;<끝:증가분> {

<본문>

}

위의 예제에서 초기화는 for문을 실행하기 직전에 무조건적으로 실행하게 된다.

그리고 첫 루프부터 조건을 확인한다.

조건이 참이라면 본문을 한번 실행한다.

그리고 끝날때 증가분을 실행한다.

그 다음 조건을 확인한다. 그래도 참이면 본문을 실행한다.

이하 조건이 맞을 때 까지 무한반복한다.



그러나 여러분이 만약 while문이 너무 그립다면 어떻게 해야할까?

걱정 할거 없다. while문을 쓰는 부분에 for문을 쓰면 된다?

무슨말인지 모르겠다고?

보면 안다.


package main

import "fmt"

func main() {
sum := 0
i := 0
for i <= 10 {
sum += i
i++
}
fmt.Print("합계는 ", sum, "입니다.\n")
}

이거 완전 while과 똑같다.

만약 무한반복 하고 싶다면?

아래처럼 하면된다.


package main

import "fmt"

func main() {
sum := 0
i := 0
for {
sum += i
i++
fmt.Println(sum)
}
}

for문에 아무 조건을 적지 않으면 자동으로 조건을 true로 간주한다.



그래서 끝내주게 무한루프를 돈다.


근데 만약 특정 조건이 됬을 때 루프를 끝내고 싶으면 어떻게 해야할까?

그때 사용하는 것이 바로 break이다.


package main

import "fmt"

func main() {
sum := 0
i := 0
for {
sum += i
i++
fmt.Println(sum)
if i == 10 {
break
}
}
}

break를 만나게 되면 해당 감싸고 있는 for문을 부수고 나온다..

그래서 위의 예제의 경우 i가 10이면 for문을 부숴 버리는 것이다.



보다시피 i가10일때 박차고 나온걸 확인할 수 있다.

그럼 만약 홀수만 더하고 싶다? 이런건 어떻게 구현할 수 있을까?

이럴경우 i가 짝수인 경우를 건너 뛰어야 할 것이다.

이럴때 쓰는게 바로 continue이다.


package main

import "fmt"

func main() {
sum := 0
i := 0
for {
sum += i
i++
fmt.Println(sum)
if i%2 == 0 {
continue
}
if i > 10 {
break
}
}
}

continue문을 만나게 되면 해당 루프를 더이상 실행하지 않고 다음 루프로 바로 가버린다.

위의 예제는 i가 2로 나뉘어지는 짝수부분을 건너뛰게된다.

그리고 i가 10을 넘어가는 순간 먼추게 될것이다.



제대로 실행되는걸 확인할 수 있다.

'Programming > Go' 카테고리의 다른 글

[Go-09]맵(Map)  (0) 2018.08.31
[Go-08]배열(Array)과 슬라이스(slice)  (0) 2018.08.31
[Go-06]switch(스위치)  (0) 2018.08.31
[Go-05]조건문  (0) 2018.08.31
[Go-04]연산자  (0) 2018.08.31

+ Recent posts