Go에서 함수를 매개변수로 전달하면 유연성이 향상되고 코드 재사용이 가능해집니다. 그러나 서로 다른 시그니처를 가진 함수를 매개변수로 전달하려고 시도하는 데는 제한이 있습니다.
기존 함수를 래핑할 수 있는 decorator() 함수를 생성하려는 시나리오를 생각해 보세요. 단일 매개변수와 반환 값(예: funcA)이 있는 함수의 경우 func(interface{}) 인터페이스{}를 매개변수 유형으로 사용하면 간단합니다.
질문: 함수를 사용할 수 있나요? 특정 유형(이 경우 문자열)을 허용하고 반환하는 funcB와 같이 다음과의 호환성을 위해 func(interface{}) 인터페이스{} 유형으로 변환됩니다. decorator()?
답변: 안타깝게도 Go에서는 제네릭을 사용하지 않고는 불가능합니다. 그 이유는 함수 간 매개변수 전달 메커니즘의 근본적인 차이점에 있습니다.
예를 들어 구조체를 인수로 받아들이는 함수는 각 멤버를 개별적으로 받습니다. 반대로 해당 구조체가 포함된 인터페이스를 허용하는 함수는{} 구조체 유형에 대한 설명자와 구조체에 대한 포인터라는 두 가지 값을 수신합니다.
따라서 원하는 동작을 달성하려면 어댑터 함수가 필요합니다. 원래 함수의 서명과 예상되는 func(interface{}) 인터페이스{} 유형 사이의 격차를 해소합니다.
위 내용은 Go의 `장식자()` 함수는 제네릭 없이 특정 반환 유형이 있는 함수를 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!