runtime.Caller()
package main import ( "fmt" "path" "runtime" ) //runtime.Caller() func rc() { pc, file, line, ok := runtime.Caller(1) //表示调用的层数,0 是他本身,1 是谁调用的他 2 再往上找一层 if !ok { fmt.Printf("runtime.Caller() failed\n") return } funcName := runtime.FuncForPC(pc).Name() fmt.Println(funcName) // main.main fmt.Println(file) // /Users/liuqixiang/project/go_study/src/oldbody.com/day6/03runtime_demo/main.go fmt.Println(path.Base(file)) // main.go fmt.Println(line) // 24 } func main() { rc() }