Get name of function using reflection

go, go-reflect, reflection

Solution

The solution is to use FuncForPc which returns a `*Func`.

This returns `"main.main"` :

package main

import "fmt"
import "reflect"
import "runtime"


func main() {
    name := runtime.FuncForPC(reflect.ValueOf(main).Pointer()).Name()
    fmt.Println("Name of function : " + name)
}

If you want `"main"`, just tokenize it.

Problem

I'm trying to use Go's reflection system to retrieve the name of a function but I get an empty string when calling the Name method on its type. Is this the expected behavior? This is a simple example of how I approach the problem: ``` package main import "fmt" import "reflect" func main() { typ := reflect.TypeOf(main) name := typ.Name() fmt.Println("Name of function" + name) } ```

Original source

Related problems