다음 Go 코드 조각을 고려하세요.
i := 10 next := 11 prev, i := i, next
이 조각에서 i 유형은 할당 중에 int로 성공적으로 추론되었습니다. 그러나 유사한 스니펫에 구조체 필드가 포함되면 아래 그림과 같이 유형 추론이 실패합니다.
type Foo struct { Bar int } f := Foo{10} next := 11 prev, f.Bar := f.Bar, next
후자 스니펫에서 f.Bar에 대한 유형 유추는 "non-name" 오류 메시지와 함께 실패합니다. f.Bar on left side of :=".
이 동작을 설명하기 위해 Go에서 관련 문제를 살펴보겠습니다. tracker:
Issue 6842("사양: 짧은 선언 표기법을 사용하여 필드에 할당")에서는 이 동작을 미해결 문제로 문서화합니다. 문제는 할당 구문의 모호함에서 비롯됩니다. 특히, 컴파일러는 f.Bar가 f.Bar 표현식 내의 변수 이름인지 필드 이름인지를 결정할 수 없습니다.
이슈 보고서에서는 이를 공개로 표시했지만 이후 의견에서는 이를 암시합니다. 해결되었거나 다른 변경 사항으로 대체되었을 수 있습니다. 하지만 이는 알려진 문제라는 최신 공식 발표가 남아 있습니다.
위 내용은 짧은 변수 선언의 구조체 필드에 대한 Go의 유형 추론이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!