>백엔드 개발 >Golang >Go Maps에서 익명 구조체에 대해 언제 \'struct{}{}\'를 생략할 수 있나요?

Go Maps에서 익명 구조체에 대해 언제 \'struct{}{}\'를 생략할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-10-30 14:38:35791검색

 When Can You Omit

Go에서 구조체{}{}와 {}의 차이점 탐구

Go의 익명 구조체는 간단한 데이터를 나타내는 편리한 방법을 제공합니다. 명명된 유형을 정의하지 않은 구조. 그러나 이러한 구조체를 생성하기 위한 struct{}{} 및 {} 구문은 차이점에 대한 의문을 제기할 수 있습니다.

Go에서 익명 구조체에 대한 문자열 맵을 선언하는 경우 아래와 같이 합니다.

<code class="go">var Foo = map[string]struct{}{
    "foo": struct{}{},
}</code>

IntelliJ Idea에서 "중복 유형 선언"이라는 경고가 나타날 수 있습니다. 이 문제를 해결하기 위해 다음 코드를 사용할 수 있습니다.

<code class="go">var Foo = map[string]struct{}{
    "foo": {},
}</code>

두 구문의 차이점은 컴파일러가 불완전한 익명 구조체 리터럴을 처리하는 방법에 있습니다. 첫 번째 구문인 struct{}{}에서는 익명임에도 불구하고 유형이 명시적으로 지정됩니다. 두 번째 구문인 {}에서는 유형이 완전히 생략됩니다.

Go 언어 사양에 따르면 지도 유형의 복합 리터럴 내에서 지도 유형에서 키와 값의 유형을 알 수 있는 경우 자체적으로 해당 유형의 값을 지정하려는 경우 생략할 수 있습니다. 이는 컴파일러가 이 맥락에서 {}에 대한 유형 사양을 요구하지 않는 이유를 설명합니다.

이 생략은 실수로 인해 Go 1.5 이상에서만 유효하다는 점에 유의하는 것이 중요합니다.

위 내용은 Go Maps에서 익명 구조체에 대해 언제 \'struct{}{}\'를 생략할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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