Go에서는 for 루프에서 구조체를 초기화할 때 구문 오류가 발생합니다. 구조체에 대한 포인터를 사용하면 문제가 없지만 지역 변수가 필요한 경우가 있습니다. 이 문서에서는 문제를 자세히 살펴보고 해결책을 제공합니다.
문제가 있는 코드 조각:
for r := Request{}; r.err == nil; r.id++ { r.line, r.err = input.ReadSlice(0x0a) channel <- r }
코드를 단순화하면 다음을 얻을 수 있습니다.
for r := Request{}; r.err == nil; r.id++ { r.line, r.err = input.ReadSlice(0x0a) channel <- r }
이 코드 결과는 다음과 같습니다. 다음 오류:
expected boolean or range expression, found simple statement (missing parentheses around composite literal?) (and 1 more errors)
이 오류는 구문 분석의 모호함에서 비롯됩니다. 여는 중괄호('{')입니다. 복합 리터럴의 일부이거나 for 블록의 시작일 수 있습니다.
이 모호성을 해결하기 위해 복합 리터럴 주위에 괄호를 추가합니다.
for r := (Request{}); r.err == nil; r.id++ { r.line, r.err = input.ReadSlice(0x0a) channel <- r }
구조체 초기화를 포함하여 괄호 안에는 이것이 for 루프 구문의 일부가 아닌 복합 리터럴임을 명시적으로 나타냅니다.
위 내용은 For 루프에서 구조체를 초기화할 때 Go에서 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!