if 문

if 문

프로그램을 짜다 보면 '이 조건이 참일 때만 이 코드를 실행하고, 아니면 저 코드를 실행할지'를 정해야 하는 순간이 자주 오죠. 그 선택을 담당하는 문장이 바로 if 문이에요. if 문은 불리언(boolean) 표현식의 값에 따라 두 갈래 중 하나만 조건부로 실행하도록 지정해요. 표현식이 true로 평가되면 "if" 갈래(if branch)가 실행되고, 그렇지 않으면 — 존재한다면 — "else" 갈래(else branch)가 실행돼요.

출처: Go Specification

본문

if 문의 문법(EBNF)은 이렇게 생겼어요.

IfStmt = "if" [ SimpleStmt ";" ] Expression Block [ "else" ( IfStmt | Block ) ] .

가장 단순한 형태는 조건과 블록만 있는 경우예요. 예를 들어 어떤 값이 최댓값을 넘으면 그 값으로 고정해 두는 코드를 생각해 볼게요.

if x > max {
	x = max
}

여기서 x가 max보다 크면 블록 안의 x = max가 실행되는 거예요.

그런데 조건을 평가하기 전에 먼저 실행되고 싶은 간단한 문장이 있다면, if 문이 그 앞에 두고 쓸 수도 있어요. 즉 표현식 앞에 간단한 문장(simple statement)이 올 수 있고, 그 문장은 표현식이 평가되기 전에 먼저 실행돼요.

if x := f(); x < y {
	return x
} else if x > z {
	return z
} else {
	return y
}

위 코드에서 x := f()가 먼저 실행된 뒤에 그 x를 가지고 조건을 판단하죠. 그리고 else 다음에 else if를 붙여 갈래를 계속 이어 나갈 수도 있고, 마지막 else로 나머지 경우를 잡을 수도 있어요.

더 알아보기

  • 조건을 여러 갈래로 나눌 때는 switch 문이 더 읽기 쉬울 때가 많아요.
  • 조건으로 쓰는 표현식에 대해서는 Expressions 섹션을, 실행 블록은 Blocks 섹션을 참고하세요.