>백엔드 개발 >Golang >익명 함수 없이 특정 유형의 Go 함수를 일반 데코레이터 함수에 적용하려면 어떻게 해야 합니까?

익명 함수 없이 특정 유형의 Go 함수를 일반 데코레이터 함수에 적용하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-23 12:45:14112검색

How Can I Adapt Go Functions of Specific Types to a Generic Decorator Function Without Anonymous Functions?

Go의 함수 포인터 및 어댑터: 함수를 매개변수로 전달

제시된 질문은 Go에서 임의의 함수를 매개변수로 전달하는 것과 관련이 있습니다. 특히 특정 유형의 함수를 데코레이터가 허용할 수 있는 일반 유형으로 변환하는 기능 function.

처음에는 단일 매개변수와 단일 반환 값으로 함수를 래핑할 수 있는 데코레이터 함수가 도입되었습니다. func(interface{}) 인터페이스{} 유형의 함수를 인수로 허용하므로 인터페이스 유형에서 작동하는 함수를 처리할 수 있습니다. 그러나 익명 함수를 사용하지 않고 데코레이터 함수와 호환되도록 func(string) 문자열과 같은 다른 특정 유형의 함수를 조정하는 방법에 대한 의문이 제기됩니다.

이 질문에 대한 답은 다음과 같습니다. Go 유형 시스템의 한계. 인터페이스{} 유형의 매개변수를 전달한다고 해서 반드시 함수가 임의의 유형을 허용한다는 의미는 아닙니다. 대신, 함수 자체의 특정 구현에 따라 달라집니다. 예를 들어, 구조체를 받아들이는 함수는 개별 멤버를 받는 반면, 구조체가 포함된 인터페이스를 받는 함수는 유형 정보와 그에 대한 포인터를 받습니다.

따라서 제네릭을 활용하지 않고 유일한 이러한 적응성을 달성하는 방법은 어댑터 기능을 사용하는 것입니다. 어댑터 함수는 중개자 역할을 하여 특정 함수 유형을 데코레이터 함수에 필요한 일반 인터페이스 유형으로 변환합니다.

위 내용은 익명 함수 없이 특정 유형의 Go 함수를 일반 데코레이터 함수에 적용하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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