인프런 커뮤니티 질문&답변

이상혁님의 프로필 이미지
이상혁

작성한 질문수

구글이 만든 Golang, 기초부터 배우자 - 입문편

for+조건, 무한루프

1:16 구간에서 질문

해결된 질문

작성

·

155

1

전 강의에서는 
for i := 0; i<5; i++ {
fmt.Println(i)
}
이런 식의 코드를 짰습니다.

그래서 0부터 시작해 증감식을 통해 4에서 끝나는 것을 알 수 있었습니다.

이번 강의에서는
a := 1
for a <= 2 {
  fmt.Println(a)
}
였습니다.

여기서 알고 싶은 것은 '변수의 위치'와 '왜 무한적으로 1이 생성되는 가' 입니다.

a := 1 이라고 선언을 한다고 하셨는데 전 강의에서의 i := 0 은 for 다음에 type되었지만, 
지금 강의에서 a := 1 은 for 이전에 type되어있는데
그 이유를 알고 싶고

1은 2보다 작기 때문에 2에 도달할 일이 없다 해서 
왜 1이 무한적으로 출력이 되는 것인지 알고 싶습니다.
(증감식이 없어서 그런건가요?)

답변 1

0

donchanee님의 프로필 이미지
donchanee
지식공유자

안녕하세요 수강자님!

두가지 질문에 대한 답변 드리겠습니다

1. 변수의 위치

변수의 위치가 두 가지가 다른 것은, 다양한 경우를 보여드리기 위함입니다.

만약, for i := 0; i<5; i++ 이와 같이 작성한다면 이해하신 바와 같이 변수를 선언함과 동시에 반복문이 돌게 됩니다. 그래서 증감식을 통해서 진행을 하게 됩니다. 

만약, a := 1

for a <= 2 {
  fmt.Println(a)
}

이렇게 선언을 하게 된다면, 변수는 반복문 바깥에 존재하게 되고 변수를 다르게 활용할 수 있는 여지가 있습니다 a라는 변수를 반복문 뿐만 아니라 조건문 등 다른 경우에도 쓸 수 있습니다. 

조건문을 예로 들자면 

a := 1

if a == 2 {

    for a <= 2 {
       fmt.Println(a)
    }

}

이렇게도 쓸 수 있는 것이지요! 변수를 선언하지 않고 반복문을 사용할 경우 다양한 케이스를 만들어낼 수 있습니다.

2. 왜 무한적으로 1이 생성되는 가

이에 대한 답변은 이해하신바와 같이 간단합니다.

증감식이 없기 때문에 a의 값이 항상 언제나 2보다 작습니다. a라는 변수는 1로 선언을 해줬고, 어떠한 변화도 주지 않았기 때문에 코드가 끝날때까지 계속 1로 존재합니다. 하지만 반복문의 조건은

"a가 2보다 작을 경우 반복문 안의 내용을 실행하라" 라고 말하고 있기 때문에 항상 조건을 만족하게게 되어서 무한히 a라는 변수를 출력해주는 것이죠!

이해가 되셨으면 좋겠습니다 :) 궁금한 점이 있으시다면 언제든 추가질문 부탁드립니다!

이상혁님의 프로필 이미지
이상혁
질문자

자세한 설명 감사합니다

이상혁님의 프로필 이미지
이상혁

작성한 질문수

질문하기