더북(TheBook)

2.1.4 세미콜론 생략 가능

Go에서는 세미콜론(;)으로 문장의 끝을 표시한다. Go 컴파일러는 세미콜론을 기준으로 문장 단위를 인식한다. 그래서 문장 여러 개를 세미콜론으로 구분하여 한 줄에 작성할 수도 있다.

그런데 실제 Go 코드를 보면 세미콜론이 거의 보이지 않는다. 컴파일러가 컴파일할 때 각 문장의 끝에 세미콜론을 넣어주므로 실제 코드를 작성할 때는 꼭 필요한 경우가 아니면 세미콜론을 넣을 필요가 없기 때문이다. 두 개 이상의 문장을 한 줄에 작성할 때만 문장을 구분하는 용도로 세미콜론을 넣어주면 된다.

하지만 이것이 오히려 제약이 되기도 한다. 예를 들어 중괄호({})의 여는 괄호({)는 반드시 제어문이나 함수가 시작되는 줄의 끝에 써야 한다. 컴파일러가 문장의 끝에 세미콜론을 삽입하므로 다른 줄에 여는 괄호를 쓰면 컴파일 오류가 발생한다.

▼ 세미콜론 자동 삽입으로 인한 컴파일 오류

package main
  
import "fmt"
  
func main() {
    for i := 0; i <= 5; i++ {
        fmt.Print(i)
    }
  
    for j := 5; j >= 0; j-- // for 문 끝에 세미콜론이 삽입되어 컴파일 오류 발생
    {
        fmt.Print(j)
    }
}

실행 결과

prog.go:10: syntax error: missing { after for clause

prog.go:14: syntax error: unexpected }

이 코드를 컴파일하면 두 번째 for 문의 여는 괄호({) 앞에 세미콜론이 삽입되어 컴파일 오류가 발생한다.

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