>백엔드 개발 >Golang >Go 코드에서 \'구문 오류: else 앞에 예상치 못한 세미콜론 또는 개행\'이 나타나는 이유는 무엇입니까?

Go 코드에서 \'구문 오류: else 앞에 예상치 못한 세미콜론 또는 개행\'이 나타나는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-02 12:40:02269검색

Why am I Getting

예상치 못한 구문 오류: Go에서 "Else" 앞에 예기치 않은 세미콜론 또는 줄 바꿈이 있습니다

Go 컴파일러가 수수께끼 같은 오류 메시지를 보고합니다: "구문 오류 : else 앞에 예기치 않은 세미콜론이나 개행 문자가 있습니다." 21행을 철저히 검사했음에도 불구하고 코드에는 문제가 되는 세미콜론이나 개행 문자가 없는 것으로 보입니다.

더 깊이 살펴보면 28행과 32행에서 "함수 본문 외부의 비선언문"이라는 두 가지 수수께끼 같은 오류가 추가로 발견되었습니다. 이러한 문은 main() 함수 내에 있으며 함수를 종료하는 닫는 중괄호의 영향을 받지 않아야 합니다.

앞서 언급한 오류는 21행의 근본적인 문제에서 비롯된 것으로 나타났습니다. Go 언어에는 몇 가지 고유한 세미콜론이 도입되었습니다. 처리 동작:

  • 닫는 중괄호를 포함하여 특정 토큰이 포함된 줄 끝에 세미콜론이 자동으로 삽입됩니다. }.
  • 그 결과, 닫는 중괄호 뒤에 세미콜론이 추가됩니다. if 블록.
  • if {...} else {...} 문의 경우 세미콜론을 삽입하면 구문 오류가 발생합니다. else 절 내에서는 세미콜론이 허용되지 않기 때문입니다.

이 문제를 해결하려면 else 절을 ​​if 블록의 닫는 중괄호와 같은 줄에 배치해야 합니다. 예를 들면 다음과 같습니다.

if len(current_mid) > 0 {
    processTopic(current_mid, current_topic, xmlFile)
} else {
    current_topic = make(map[string][]string)
}

"함수 본문 외부의 비선언문"과 관련된 컴파일러 오류는 함수 본문 외부의 명령문이 선언이어야 한다는 Go의 엄격한 요구 사항에서 발생합니다. 28행과 32행의 경우 표현식은 선언도 아니고 함수 본문의 일부도 아니므로 오류 메시지가 나타납니다.

위 내용은 Go 코드에서 \'구문 오류: else 앞에 예상치 못한 세미콜론 또는 개행\'이 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.