함수를 인수로 전달하기: Golang의 메타프로그래밍 접근 방식
알다시피 Golang 함수는 일급 값이므로 동적 언어에서 흔히 사용되는 메타프로그래밍 트릭입니다. 함수를 다른 함수에 인수로 전달하려면 함수 값에 대한 Golang의 고유한 지원을 활용하면 됩니다. 예는 다음과 같습니다.
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)) }
이 프로그램을 실행하면 다음과 같은 출력이 생성됩니다.
123 99
이제 런타임에 따라 함수 선택이 달라지는 시나리오를 고려해 보겠습니다. 알려진 값만 있습니다. 이를 처리하기 위해 함수 이름을 해당 함수 포인터와 연결하는 맵을 생성할 수 있습니다.
m := map[string]func(int, int) int{ "someFunction1": someFunction1, "someFunction2": someFunction2, } ... z := someOtherFunction(x, y, m[key])
이런 방식으로 함수를 이름으로 인수로 전달하여 원하는 함수를 동적으로 선택할 수 있습니다. 런타임.
위 내용은 Go에서 함수를 인수로 어떻게 전달할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!