34 lines
938 B
Go
34 lines
938 B
Go
|
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所执行的行数
|
|||
|
}
|