프로그래밍을 할 때 반복해야하는 때가 있다.
이 때 사용하는게 반복문이다.
근데 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 |