Как получить имя функции в Go (Golang)

Чтобы получить имя функции Go, вы можете использовать информацию об отражении или времени выполнения. Вот несколько способов сделать это:

Метод 1: использование отражения

package main
import (
    "fmt"
    "reflect"
)
func MyFunction() {
    fmt.Println("Hello, World!")
}
func main() {
    functionName := reflect.ValueOf(MyFunction).Pointer().Name()
    fmt.Println("Function Name:", functionName)
}

Метод 2: использование runtime.FuncForPC

package main
import (
    "fmt"
    "runtime"
)
func MyFunction() {
    fmt.Println("Hello, World!")
}
func main() {
    pc := reflect.ValueOf(MyFunction).Pointer()
    functionName := runtime.FuncForPC(pc).Name()
    fmt.Println("Function Name:", functionName)
}

Метод 3. Использование специального пакета среды выполнения

package main
import (
    "fmt"
    "runtime"
)
func MyFunction() {
    fmt.Println("Hello, World!")
}
func GetFunctionName(f interface{}) string {
    pc := reflect.ValueOf(f).Pointer()
    return runtime.FuncForPC(pc).Name()
}
func main() {
    functionName := GetFunctionName(MyFunction)
    fmt.Println("Function Name:", functionName)
}

В приведенных выше примерах в качестве примера используется функция MyFunction. Замените его на функцию, имя которой вы хотите получить.