>백엔드 개발 >Golang >Go의 함수 이름에서 함수 포인터를 어떻게 검색할 수 있나요?

Go의 함수 이름에서 함수 포인터를 어떻게 검색할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-12-03 07:22:10401검색

How Can I Retrieve Function Pointers from Function Names in Go?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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