문제:
In Go , 지도 선언에서 익명 구조체를 값으로 사용하면 Gogland에 경고가 발생하여 다음과 같은 질문이 표시됩니다. 이러한 컨텍스트에서 struct{}{} 선언과 {} 선언의 차이점은 무엇입니까?
답변:
이 두 구문 뒤에 있는 의미를 이해하는 것이 중요합니다.
일반적으로 복합 리터럴에는 명시적인 유형 선언(예: []int{1, 2, 3})이 필요합니다. 그러나 맵 작업을 할 때 컴파일러는 맵 유형 자체에서 키와 값의 유형을 추론할 수 있습니다. 이를 통해 적절한 유형의 값이 제공되면 유형 선언을 생략하여 복합 리터럴 구문을 단순화할 수 있습니다.
Go 사양에 따르면 이와 같은 경우 복합 리터럴의 유형이 맵에서 예상하는 유형과 일치하면 유형 선언이 생략될 수 있습니다. 이 동작은 처음에는 실수였지만 Go 1.5에서는 유효한 기능이 되었습니다.
참고: 다른 유형의 복합 리터럴(예: 배열, 슬라이스)을 초기화할 때 유형 선언을 생략할 수 없습니다.
위 내용은 Go 맵의 익명 구조체: `struct{}{}`와 `{}`의 차이점은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!