Go의 함수 이름에서 함수 포인터 검색
많은 프로그래밍 언어에서는 함수 이름의 문자열 표현에서 함수 포인터에 액세스할 수 있습니다. 이 기능은 실행할 함수를 동적으로 선택하는 등의 메타프로그래밍 기술에 특히 유용합니다.
Go의 솔루션
다른 언어와 달리 Go는 기본적으로 함수 포인터를 처음으로 지원합니다. -class 값, 함수 이름에서 값을 얻기 위한 추가 메커니즘이 필요하지 않습니다. 대신 함수를 다른 함수에 인수로 직접 전달할 수 있습니다.
예를 들어 다음 코드를 살펴보세요.
package main import "fmt" func someFunction1(a, b int) int { return a + b } func someFunction2(a, b int) int { return a - b } func someOtherFunction(a, b int, f func(int, int) int) int { return f(a, b) } func main() { fmt.Println(someOtherFunction(111, 12, someFunction1)) fmt.Println(someOtherFunction(111, 12, someFunction2)) }
이 코드에서 someOtherFunction은 함수 포인터를 인수로 받아들이고 호출합니다. 제공된 인수를 사용하여 지정된 함수.
동적 함수에 대한 맵 사용 선택
함수 선택이 런타임 정보에 따라 달라지는 경우 맵을 사용하여 함수 이름을 해당 함수 포인터와 연결할 수 있습니다. 예를 들면 다음과 같습니다.
m := map[string]func(int, int) int{ "someFunction1": someFunction1, "someFunction2": someFunction2, } ... z := someOtherFunction(x, y, m[key])
이를 사용하면 지정된 키를 기반으로 기능을 동적으로 검색하고 실행할 수 있습니다.
위 내용은 Go의 함수 이름에서 함수 포인터를 어떻게 검색할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!