Go語言獲取當前函數名稱和上一層調用者函數名稱


Go語言獲取當前函數名稱和上一層調用者函數名稱

  • 假設main函數調用CallTest1函數,CallTest1函數又調用Test1函數,Test1函數又調用getFunName函數,我們可以依次都獲取出對應的函數名稱
  • 我們可以稱函數getFunName為當前函數
  • 然后稱Test1函數為調用者函數
  • 反正都能獲取出來了,要第幾層的函數就都可獲取了
package main

import (
   "fmt"
   "runtime"
   "strings"
)

func Test1() {
   getFunName(0)
   getFunName(1)
   getFunName(2)
   getFunName(3)
   getFunName(4)
   getFunName(5)
   getFunName(6)
   getFunName(7)
}
func CallTest1() {
   Test1()
}
func main() {
   CallTest1()
}

//獲取第幾層函數的名稱
//1-當前層
//2-上一層
//3-再上一層
//4-再再上一層
func getFunName(l int) string {
   pc, _, _, _ := runtime.Caller(l)
   name := runtime.FuncForPC(pc).Name()
   split := strings.Split(name, ".")
   fmt.Printf("第%d層函數,函數名稱是:%s\n", l, name)
   return split[len(split)-1]
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM