>백엔드 개발 >Golang >짧은 변수 선언의 구조체 필드에 대한 Go의 유형 추론이 실패하는 이유는 무엇입니까?

짧은 변수 선언의 구조체 필드에 대한 Go의 유형 추론이 실패하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-03 17:36:43610검색

Why Does Go's Type Inference Fail for Struct Fields in Short Variable Declarations?

구조체 할당 시 Go 유형 추론 모호성

다음 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:

Github Issue 6842

Issue 6842("사양: 짧은 선언 표기법을 사용하여 필드에 할당")에서는 이 동작을 미해결 문제로 문서화합니다. 문제는 할당 구문의 모호함에서 비롯됩니다. 특히, 컴파일러는 f.Bar가 f.Bar 표현식 내의 변수 이름인지 필드 이름인지를 결정할 수 없습니다.

이슈 보고서에서는 이를 공개로 표시했지만 이후 의견에서는 이를 암시합니다. 해결되었거나 다른 변경 사항으로 대체되었을 수 있습니다. 하지만 이는 알려진 문제라는 최신 공식 발표가 남아 있습니다.

위 내용은 짧은 변수 선언의 구조체 필드에 대한 Go의 유형 추론이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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