C언어 처럼 Go의 정식 문법은 구문으로 종료하기 위해 세미콜론을 사용함
하지만 실제 소스에 개발자가 작성하지 않고 구문 분석기(lexer)가 간단한 규칙을 사용해 코드를 스캔하는 과정에 자동으로 세미콜론을 삽입함.
규칙은 다음과 같음
한 라인의 마지막 토큰이 식별자(int, float64 등)이거나 숫자, 문자열과 같은 기본 리터럴 혹은 다음의 토큰 중 하나일 경우에 어휘분석기는 항상 토큰 다음에 세미콜론을 추가함.
break continue fallthrough return ++ -- ) }
go func() {for {dst <- <- src } } ()
위 코드는 세미콜론이 필요하지 않음
Go프로그램에서, 세미콜론은 for loop 구문의 변수 초기화, 조건, 그리고 진행 변수를 구분할 때에만 사용함.
for i := 1; i <= 100; i++ {
sum += i
}
또한 한 라인에서 여러 문장을 구분하기 위해 필요하고 작성해야 함
go에서 세미콜론 삽입 규칙 중 중요한 것은 control구조에서 (if, for, switch… 같은) 여는 괄호를 다음 라인에 위치시켜서는 안된다.
if i < f() {
g()
}
if i < f() // wrong!
{ // wrong!
g()
}