wangpl_study/day06/runtime_demo/main.go

34 lines
938 B
Go
Raw Normal View History

2024-10-15 20:05:52 +08:00
package main
import (
"fmt"
"runtime"
)
func f() {
pc, fine, line, ok := runtime.Caller(2)
if !ok {
fmt.Printf("runtime.Caller() failed\n")
return
}
funcName := runtime.FuncForPC(pc).Name() //这里拿到的应该是main.main函数如果需要拿到f()那么这里传递的应该是Caller(0)
fmt.Println(funcName)
fmt.Println(fine) // runtime_demo/main.go
fmt.Println(line) // 12是去找这个runtime.caller所执行的行数
}
func f1() {
f()
}
func main() {
f1() //注意这里的f1()套了一层所以应该传2
// pc, fine, line, ok := runtime.Caller(0) //注意这里传0是当前main函数里面执行的package,那比如说上面有个f1()函数这里的Caller就需要传到1
// if !ok {
// fmt.Printf("runtime.Caller() failed\n")
// return
// }
// fmt.Println(pc)
// fmt.Println(fine) // runtime_demo/main.go
// fmt.Println(line) // 12是去找这个runtime.caller所执行的行数
}