广告
返回顶部
首页 > 资讯 > 后端开发 > GO >怎么在Golang中获取当前函数名称
  • 782
分享到

怎么在Golang中获取当前函数名称

2023-06-15 00:06:19 782人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关怎么在golang中获取当前函数名称,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是Golanggolang 是Google开发的一种静态强类型、编译型、并发

这篇文章将为大家详细讲解有关怎么在golang中获取当前函数名称,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

什么是Golang

golang 是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,其语法与 C语言相近,但并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能。

大家还是直接看代码吧~

// 获取正在运行的函数名func runFuncName()string{    pc := make([]uintptr,1)    runtime.Callers(2,pc)    f := runtime.FuncForpc(pc[0])    return f.Name()}
package main import(    "fmt"    "runtime") // 获取正在运行的函数名func runFuncName()string{    pc := make([]uintptr,1)    runtime.Callers(2,pc)    f := runtime.FuncForPC(pc[0])    return f.Name()} func test1(){    i:=0    fmt.Println("i =",i)    fmt.Println("FuncName1 =",runFuncName())} func test2(){    i:=1    fmt.Println("i =",i)    fmt.Println("FuncName2 =",runFuncName())} func main(){    fmt.Println("打印运行中的函数名")    test1()    test2()}

golang 的runtime库,提供Caller函数,可以返回运行时正在执行的文件名和行号:

func Caller(skip int) (pc uintptr, file string, line int, ok bool) {

Caller reports file and line number infORMation about function invocations on the calling goroutine's stack. The argument skip is the number of stack frames to ascend, with 0 identifying the caller of Caller. (For historical reasons the meaning of skip differs between Caller and Callers.) The return values report the program counter, file name, and line number within the file of the corresponding call. The boolean ok is false if it was not possible to recover the information.

调用方法如下,返回的file为绝对路径,line为行号。有了这个就可以在自己的日志等函数中添加这个记录了。

_, file, line, ok := runtime.Caller(1)

补充:go 定位函数操作位置(文件名、函数名、所在行)

runtime.Caller()返回函数执行程序计数pc、执行的文件名和所在行数

runtime.FuncForPC()传入pc,得到运行的函数指针

文件结构

- runtime- -file1.go- -file2.go- -main.go

main.go文件

package mainimport ("fmt""path""runtime")func main(){name, funcName, line := f2(0)fmt.Printf("file:%v;function:%v;line:%d",name,funcName,line)}func getLocation(skip int)(fileName ,funcName string ,line int){pc, file, line, ok := runtime.Caller(skip)if !ok {fmt.Println("get info failed")return}fmt.Println(pc,file)fileName = path.Base(file)funcName = runtime.FuncForPC(pc).Name()return}

file1.go文件

package mainfunc f1(skip int)(fileName ,funcName string ,line int){ fileName, funcName, line = getLocation(skip) return}

file2.go文件

package mainfunc f2(skip int)(fileName ,funcName string ,line int){ return f1(skip)}

当在main.go文件中调用f2时

func main(){ name, funcName, line := f2(3) fmt.Printf("file:%v;function:%v;line:%d",name,funcName,line) //output:file:main.go;function:main.main;line:10}

f2调取f1,f1调取getLocation;f2->f1->getLocation经历了三层调用,所以在f2中传入3时,返回的当前该函数的执行位置及所在函数名、所在文件名

当传入2时,返回的是(file:file2.go;function:main.f2;line:8)f2函数所在函数名、文件位置、文件名

当传入1时,返回的是(file:file1.go;function:main.f1;line:4)f1函数所在函数名、文件位置、文件名

当传入0时,返回的是(file:main.go;function:main.getLocation;line:16)getLocation函数所在函数名、文件位置、文件名

关于怎么在Golang中获取当前函数名称就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: 怎么在Golang中获取当前函数名称

本文链接: https://www.lsjlt.com/news/276012.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在Golang中获取当前函数名称
    这篇文章将为大家详细讲解有关怎么在Golang中获取当前函数名称,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是golanggolang 是Google开发的一种静态强类型、编译型、并发...
    99+
    2023-06-15
  • C++ 获取当前正在运行函数的名称
    目录func、FUNCTION、__PRETTY_FUNCTION__的区别func、__FUNCTION__的区别?func、FUNCTION、__PRETTY_FUNCTION_...
    99+
    2023-05-16
    C++ 获取运行函数名称 C++获取函数名称
  • java怎么获取当前线程名称
    可以通过Thread类的getName()方法来获取当前线程的名称。 示例代码如下: public class Main { ...
    99+
    2023-10-28
    java
  • Golang 实现获取当前函数名称和文件行号等操作
    大家还是直接看代码吧~ // 获取正在运行的函数名 func runFuncName()string{ pc := make([]uintptr,1) runti...
    99+
    2022-11-12
  • python 小点心---获取当前函数名
    python 具有强大的自省能力,在函数运行时,可以在函数内部获取到当前所在的函数名称,请看示例代码 #coding=utf-8 import sys import inspect def my_name(): print '...
    99+
    2023-01-31
    函数 小点心 python
  • python获取当前运行函数名称的方法实例代码
    python获取当前运行函数名称的方法实例代码 摘要: c/c++中获取函数所在源码名,函数名和行号的方法很简单 __FILE__,__FUNCTION__和__LINE__ python没有这种语法,但也...
    99+
    2022-06-04
    函数 实例 名称
  • Ruby中怎么获取当前类名
    这期内容当中小编将会给大家带来有关Ruby中怎么获取当前类名,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Ruby语言可以说是目前最为灵活敏捷的编程语言。它的应用方式比较特殊,可以给编程人员带来愉悦的编程...
    99+
    2023-06-17
  • php 当前方法名怎么获取
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php 当前方法名怎么获取?PHP获取当前类名、方法名 __CLASS__ 获取当前类名 __FUNCTION__ 当前函数名(confirm) __METHO...
    99+
    2022-11-01
  • javascript怎么获取当前方法名
    本篇内容主要讲解“javascript怎么获取当前方法名”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript怎么获取当前方法名”吧! ...
    99+
    2022-10-19
  • PHP怎么获取到当前主域名
    可以使用`$_SERVER`超全局变量来获取当前主域名。以下是通过`$_SERVER`获取当前主域名的示例代码:```php$hos...
    99+
    2023-08-30
    PHP
  • C#中怎么利用匿名块获取获取序列当前值
    这期内容当中小编将会给大家带来有关C#中怎么利用匿名块获取获取序列当前值,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在Oracle中建立表、序列、触发器:SQL> create ...
    99+
    2023-06-17
  • php怎么获取当前的类名和方法名
    本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑在php中,可以利用魔术常量来获取类名和方法名。魔术常量属于特殊的预定义常量,这些常量可以根据它们的使用位置而变化。魔术常量通常以两个下划线__开头,并以两个下划线__...
    99+
    2014-08-05
    php 获取类名 获取方法名
  • mysql怎么显示当前数据库名称
    mysql显示当前数据库名称的方法:1.用select database()语句查询当前所使用的数据库 ;2.show tables语句输出; 3.用status语句输出;mysql显示当前数据库名称的方法:在MySQL下查看当前使用的是哪...
    99+
    2022-10-09
  • VB.NET中怎么获取当前URL
    VB.NET中怎么获取当前URL,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。真正成为面向对象以及支持继承性的语言。窗体设计器支持可视化继承,并且包含了许多新的特性,比如自动改...
    99+
    2023-06-17
  • mybatis怎么获取数据库名称
    在MyBatis中,获取数据库名称可以通过以下方式之一:1. 通过数据库连接对象获取数据库名称:```javaConnection ...
    99+
    2023-08-19
    mybatis 数据库
  • mysql中怎么获取当前时间、秒数
    这篇文章给大家介绍mysql中怎么获取当前时间、秒数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、获取当前时间      SELECT CU...
    99+
    2022-10-18
  • vbs中怎么获取当前路径
    vbs中怎么获取当前路径,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。CMD当前路径代码如下:test = createobject("Scripting.Fil...
    99+
    2023-06-08
  • vbs中怎么获取当前目录
    这篇文章给大家介绍vbs中怎么获取当前目录,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。CMD当前路径代码如下:test = createobject("Scripting.FileSys...
    99+
    2023-06-08
  • javascript中怎么获取当前时间
    这篇文章给大家分享的是有关javascript中怎么获取当前时间的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 在javascript中,可以使用Da...
    99+
    2022-10-19
  • JavaScript中怎么获取当前日期
    这期内容当中小编将会给大家带来有关JavaScript中怎么获取当前日期,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、JavaScript的Date对象const&n...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作