지도의 기능 키
이 기사에서는 Go 프로그래밍 언어에서 기능을 지도 키로 사용할 때의 제한 사항을 살펴봅니다.
문제
다음과 같은 가상의 Go 코드를 생각해 보세요.
type Action func(int) func test(a int) { } func test2(a int) { } func main() { x := map[Action]bool{} x[test] = true x[test2] = false }
이 코드를 컴파일하려고 하면 "잘못된 맵 키"라는 오류가 발생합니다. type Action."
대답
Go 언어 사양에서는 함수, 맵, 슬라이스를 맵 키로 사용하는 것을 명시적으로 금지합니다. 구체적으로 사양에는 다음과 같이 명시되어 있습니다.
"비교 연산자 == 및 !=는 키 유형의 피연산자에 대해 완전히 정의되어야 합니다. 따라서 키 유형은 함수, 맵 또는 슬라이스가 아니어야 합니다."
이러한 제한은 키 유형에 대해 같음 비교 연산자(== 및 !=)가 잘 정의되어야 하기 때문에 적용됩니다. 함수, 맵 및 슬라이스는 동등 비교가 완전히 정의되지 않았기 때문에 적합한 키 유형이 아닙니다.
결론
함수를 맵 키로 사용하고 싶은 유혹이 있을 수 있지만 , 잘 정의된 동등 비교가 필요하기 때문에 Go에서는 허용되지 않습니다. 따라서 문자열, 정수, 구조체 등 다른 적합한 유형을 맵 키로 사용해야 합니다.
위 내용은 Go에서 함수를 맵 키로 사용할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!