package main
import (
"fmt"
"path"
"runtime"
)
func main(){
// 函数名指针(runtime.FuncForPC(caller_name).Name()获取函数名),文件路径,代码行号,是否可以获取到信息
// caller_name, file, line, status := runtime.Caller(1)
// skip: 要提升的堆栈帧数 0:当前执行caller的文件位置(GOPATH),1:源码上层的函数(GOROOT),2: skip=1的上层的函数,
fmt.Println(runtime.Caller(0) )
fmt.Println(runtime.Caller(1) )
fmt.Println(runtime.Caller(2) )
fmt.Println(runtime.Caller(3) )
//4841189 F:/Psc/src/git-pd.sd-inc.com/slg-service/hstest.go 10 true
//4410329 F:/Go_install/src/runtime/proc.go 203 true
//4574944 F:/Go_install/src/runtime/asm_amd64.s 1373 true
//0 0 false
caller_name,filepath,_,_ := runtime.Caller(0)
// 获取skip=0的函数名 main.main
fmt.Println(runtime.FuncForPC(caller_name).Name())
// 获取当前文件目录 F:/PMS/src/git-pd.sd-inc.com/slg-service
fmt.Println(path.Dir(filepath))
}
golang中的runtime.Caller()
最新推荐文章于 2024-02-23 18:13:56 发布