美文网首页
golang中如何获得函数的函数名

golang中如何获得函数的函数名

作者: 个00个 | 来源:发表于2018-12-20 17:22 被阅读0次

如何获取golang中的函数的名字, 这里需要用到反射. 可以看如下代码.

重点使用 runtime.FuncForPC 这个函数获取函数名.
使用strings.FieldsFunc 对得到的带 路径名和包名的 函数名进行必要的处理.

package main

import (
    "fmt"
    "reflect"
    "runtime"
    "strings"
    // "seps"
    "runtime/debug"
)

func foo() {
}

func GetFunctionName(i interface{}, seps ...rune) string {
    // 获取函数名称
    fn := runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name()

    // 用 seps 进行分割
    fields := strings.FieldsFunc(fn, func(sep rune) bool {
        for _, s := range seps {
            if sep == s {
                return true
            }
        }
        return false
    })

    // fmt.Println(fields)

    if size := len(fields); size > 0 {
        return fields[size-1]
    }
    return ""
}

func main() {
    // This will print "name: main.foo"
    fmt.Println("name:", GetFunctionName(foo))

    // runtime/debug.FreeOSMemory
    fmt.Println(GetFunctionName(debug.FreeOSMemory))
    // FreeOSMemory
    fmt.Println(GetFunctionName(debug.FreeOSMemory, '.'))
    // FreeOSMemory
    fmt.Println(GetFunctionName(debug.FreeOSMemory, '/', '.'))
}

相关文章

  • golang中如何获得函数的函数名

    如何获取golang中的函数的名字, 这里需要用到反射. 可以看如下代码. 重点使用 runtime.FuncF...

  • python学习笔记 - (2)函数

    定义函数格式:def 函数名(参数):代码1代码2... 调用函数格式:函数名(参数) /// python中,函...

  • 2016.11.22 JS

    函数 函数:function foo函数名(函数的自变量){ }; 调用函数:foo();函数名加上括号就是调用函...

  • 菜鸡学Swift3.0 10.函数

    1. 函数的定义 func 函数名(参数)-> 返回值类型 { 函数体 } 函数名( 参数名:参数值 ) 2. 函...

  • Python - 2017/01/28-函数

    调用python内置函数 函数名(参数) 即可调用python内置函数 help(函数名) 返回python对于函...

  • PHP函数

    function functionName() { Code } 函数名不区分大小写 函数名不能以数字开头 函...

  • Day10总结

    匿名函数 普通函数: def 函数名(参数列表):函数体 匿名函数: 函数名 = lambda:参数列表:返回值函...

  • Python之函数名称的应用

    函数名可以作为容器类数据类型元素函数名可以作为函数的参数函数名可以作为函数的返回值函数名指向的是函数的内存地址 函...

  • 理解javascript中的立即执行函数(function(){

    函数声明:使用function声明函数,并指定函数名。function setFn() {// coding} 函...

  • Javascript函数原理

    函数定义:function 函数名称(形式参数列表){语句}调用函数:函数名称(实际参数列表);注意:1)js的函...

网友评论

      本文标题:golang中如何获得函数的函数名

      本文链接:https://www.haomeiwen.com/subject/uhfykqtx.html