더북(TheBook)

2.3.1 if

if 문은 조건식을 판단하여 결과가 trueif 문 내부에 있는 구문을 수행한다.

if 조건식 {
...
}

조건식에는 소괄호(())를 사용하지 않는다. 조건식에 있는 조건 여러 개를 && 또는 ||로 연결할 때 가독성을 높이기 위해 각 조건을 소괄호로 묶을 수는 있다. 조건식을 하나만 사용할 때는 소괄호를 쓰지 않는다. 조건식의 결과를 반대로 뒤집기 위해 ! 연산자를 사용할 수도 있다.

조건식의 결과는 반드시 불(Boolean) 타입이어야 한다. Go에서는 불 타입이 아닌 값을 불 타입으로 알아서 변환해주지 않는다. 다음과 같이 작성하면 컴파일 오류가 발생한다.

▼ 잘못된 코드

package main
  
func main() {
    i := 1
    if i { // if 문의 조건식에는 불 타입 값만 사용 가능
        // ...
    }
}

실행 결과

prog.go:5: non-bool i (type int) used as if condition

▼ 올바른 코드

package main
 
func main() {
    i := 1
    if i > 0 {
        // …
    }
}

조건식의 결과가 false일 때 수행할 작업은 else 안에 작성한다.

if 조건식 {
    
} else {
    
}

if 문 안에 또 다른 if 문을 넣고 싶다면 else if를 사용하면 된다. else if의 개수는 제한이 없지만, 가독성을 위해 너무 많이 사용하지 않도록 한다. 처리할 조건식이 많을 때는 else if 대신 switch 문을 사용한다.

if 조건식1 {
    
} else if 조건식2 {
    
} else {
    
}

중괄호({})는 필수이다. if 문 내부에 코드가 단 한 줄만 있더라도 중괄호를 써야 한다. 여는 괄호({)는 if와 같은 줄에 있어야 하고, 닫는 괄호(})는 else와 같은 줄에 있어야 한다. 다음과 같이 작성하면 컴파일 오류가 발생한다.

if x {
    
}        // 닫는 괄호가 else와 다른 줄에 있으므로 컴파일 오류 발생
else {
    
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.