婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Golang 實現獲取當前函數名稱和文件行號等操作

Golang 實現獲取當前函數名稱和文件行號等操作

熱門標簽:壽光微信地圖標注 阿克蘇地圖標注 百度地圖標注后傳給手機 外呼系統顯本地手機號 excel地圖標注分布數據 電話機器人軟件免費 涿州代理外呼系統 評價高的400電話辦理 外呼系統用什么卡

大家還是直接看代碼吧~

// 獲取正在運行的函數名
func runFuncName()string{
    pc := make([]uintptr,1)
    runtime.Callers(2,pc)
    f := runtime.FuncForPC(pc[0])
    return f.Name()
}
package main 
import(
    "fmt"
    "runtime"
)
 
// 獲取正在運行的函數名
func runFuncName()string{
    pc := make([]uintptr,1)
    runtime.Callers(2,pc)
    f := runtime.FuncForPC(pc[0])
    return f.Name()
}
 
func test1(){
    i:=0
    fmt.Println("i =",i)
    fmt.Println("FuncName1 =",runFuncName())
}
 
func test2(){
    i:=1
    fmt.Println("i =",i)
    fmt.Println("FuncName2 =",runFuncName())
}
 
func main(){
    fmt.Println("打印運行中的函數名")
    test1()
    test2()
}

golang 的runtime庫,提供Caller函數,可以返回運行時正在執行的文件名和行號:

func Caller(skip int) (pc uintptr, file string, line int, ok bool) {

Caller reports file and line number information about function invocations on the calling goroutine's stack. The argument skip is the number of stack frames to ascend, with 0 identifying the caller of Caller. (For historical reasons the meaning of skip differs between Caller and Callers.) The return values report the program counter, file name, and line number within the file of the corresponding call. The boolean ok is false if it was not possible to recover the information.

調用方法如下,返回的file為絕對路徑,line為行號。有了這個就可以在自己的日志等函數中添加這個記錄了。

_, file, line, ok := runtime.Caller(1)

補充:go 定位函數操作位置(文件名、函數名、所在行)

runtime.Caller()返回函數執行程序計數pc、執行的文件名和所在行數

runtime.FuncForPC()傳入pc,得到運行的函數指針

文件結構

- runtime
- -file1.go
- -file2.go
- -main.go

main.go文件

package main
import (
	"fmt"
	"path"
	"runtime"
)
func main(){
	name, funcName, line := f2(0)
	fmt.Printf("file:%v;function:%v;line:%d",name,funcName,line)
}
func getLocation(skip int)(fileName ,funcName string ,line int){
	pc, file, line, ok := runtime.Caller(skip)
	if !ok {
		fmt.Println("get info failed")
		return
	}
	fmt.Println(pc,file)
	fileName = path.Base(file)
	funcName = runtime.FuncForPC(pc).Name()
	return
}

file1.go文件

package main
func f1(skip int)(fileName ,funcName string ,line int){
 fileName, funcName, line = getLocation(skip)
 return
}

file2.go文件

package main
func f2(skip int)(fileName ,funcName string ,line int){
 return f1(skip)
}

當在main.go文件中調用f2時

func main(){
 name, funcName, line := f2(3)
 fmt.Printf("file:%v;function:%v;line:%d",name,funcName,line)
 //output:file:main.go;function:main.main;line:10
}

f2調取f1,f1調取getLocation;f2->f1->getLocation經歷了三層調用,所以在f2中傳入3時,返回的當前該函數的執行位置及所在函數名、所在文件名

當傳入2時,返回的是(file:file2.go;function:main.f2;line:8)f2函數所在函數名、文件位置、文件名

當傳入1時,返回的是(file:file1.go;function:main.f1;line:4)f1函數所在函數名、文件位置、文件名

當傳入0時,返回的是(file:main.go;function:main.getLocation;line:16)getLocation函數所在函數名、文件位置、文件名

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Go語言的os包中常用函數初步歸納
  • Golang 獲取文件md5校驗的方法以及效率對比
  • GoLang中生成UUID唯一標識的實現
  • 聊聊golang中多個defer的執行順序
  • Golang全局變量加鎖的問題解決
  • go語言基礎 seek光標位置os包的使用

標簽:蘭州 重慶 欽州 雞西 銅川 梅河口 吐魯番 汕頭

巨人網絡通訊聲明:本文標題《Golang 實現獲取當前函數名稱和文件行號等操作》,本文關鍵詞  Golang,實現,獲取,當前,函數,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Golang 實現獲取當前函數名稱和文件行號等操作》相關的同類信息!
  • 本頁收集關于Golang 實現獲取當前函數名稱和文件行號等操作的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产成人午夜片在线观看高清观看| 亚洲精品一区二区三区福利| 日韩视频免费观看高清在线视频| 在线免费不卡视频| 国产一区91精品张津瑜| 久久精品国产亚洲高清剧情介绍| 精品国产91洋老外米糕| 精品国精品自拍自在线| 性欧美疯狂xxxxbbbb| 成人免费毛片app| 这里只有精品视频在线观看| 午夜精品成人在线| 国产精品女主播在线观看| 精品久久久久久久一区二区蜜臀| 欧美日韩在线免费视频| 国产精品欧美一区喷水| 欧美一区二区三区性视频| 尤物av一区二区| 欧美一区二区三级| 国产成人av影院| 欧美高清视频不卡网| 亚洲乱码中文字幕| 欧美激情在线一区二区| 精品欧美一区二区三区精品久久| av电影一区二区| 激情丁香综合五月| 久久99精品国产麻豆不卡| 亚洲精品欧美专区| 中文字幕中文字幕一区二区| 久久久久免费观看| 精品国精品国产| 在线日韩av片| 蜜桃精品视频在线| 欧美女孩性生活视频| 日韩三级视频在线看| 精品国一区二区三区| 一区二区三区四区精品在线视频| 蜜桃一区二区三区在线观看| 欧美日韩精品是欧美日韩精品| 日韩精品免费专区| 欧美xxxxx裸体时装秀| 色综合久久综合网欧美综合网| 国产精品区一区二区三区| 成人app软件下载大全免费| 日韩精品91亚洲二区在线观看| 日韩一级高清毛片| av在线不卡免费看| 欧美日韩一区在线观看| 欧美在线观看禁18| 亚欧色一区w666天堂| 亚洲你懂的在线视频| 欧美三级乱人伦电影| 亚洲欧美综合色| 激情欧美一区二区| 久久久精品国产免大香伊| 激情综合网av| 国产91精品一区二区麻豆亚洲| 麻豆国产精品官网| 久久国产精品第一页| 亚洲欧洲制服丝袜| 久久看人人爽人人| 日本一区二区三区四区| 91麻豆精品久久久久蜜臀| 欧美伦理视频网站| 一本大道av伊人久久综合| 97久久精品人人爽人人爽蜜臀| 亚瑟在线精品视频| 麻豆精品久久精品色综合| 欧美日韩一本到| 国产精品久久99| 精品国产乱码久久久久久牛牛| 久久综合色鬼综合色| 91老司机福利 在线| 亚洲h动漫在线| 欧美成人aa大片| 国内精品自线一区二区三区视频| 综合中文字幕亚洲| 日韩在线一区二区| 日韩精品自拍偷拍| 欧美一区二区三区四区五区| 久久精品72免费观看| 又紧又大又爽精品一区二区| 日韩一区二区麻豆国产| 久久综合久久综合九色| 国产亚洲短视频| 日韩一级二级三级| 亚洲乱码国产乱码精品精可以看| 欧美精品一区二区在线观看| 99精品欧美一区| 日韩欧美黄色影院| 国产精品三级av| 国产午夜精品久久久久久久| 亚洲色图欧洲色图婷婷| 久久国产精品无码网站| 在线观看免费成人| 婷婷久久综合九色综合伊人色| 色综合天天视频在线观看| 亚洲天堂av老司机| 国产成人精品www牛牛影视| 91麻豆精品国产91久久久久久| 99r国产精品| 亚洲图片激情小说| 91视频观看免费| 亚洲愉拍自拍另类高清精品| 色哟哟欧美精品| 午夜一区二区三区视频| 一本大道av伊人久久综合| 欧美性受xxxx| 国产精品三级在线观看| 成人av电影在线网| 亚洲美女视频在线观看| 日韩午夜小视频| 国产不卡视频一区二区三区| 亚洲日本va午夜在线电影| 99麻豆久久久国产精品免费| 亚洲图片欧美色图| 久久久亚洲精品石原莉奈| 91色porny在线视频| 免费看日韩a级影片| 亚洲精品高清在线观看| 欧美群妇大交群中文字幕| 国产寡妇亲子伦一区二区| 国产精品理论在线观看| 欧美三级中文字| 午夜精品一区二区三区免费视频| 国产日产精品1区| 91精品国产综合久久蜜臀| 成人avav在线| 成人动漫中文字幕| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久久亚洲欧洲日产国码αv| 884aa四虎影成人精品一区| 99精品视频一区二区三区| 精品夜夜嗨av一区二区三区| 中文字幕av不卡| 久久久国际精品| 日本精品视频一区二区三区| 99精品视频在线观看免费| proumb性欧美在线观看| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 福利一区在线观看| 国产精选一区二区三区| 老司机午夜精品| 亚洲综合男人的天堂| 精品国产乱码久久久久久影片| 欧美电影免费观看高清完整版| 99国产精品视频免费观看| 不卡免费追剧大全电视剧网站| 国产91丝袜在线18| 不卡的电影网站| 从欧美一区二区三区| 91猫先生在线| 欧美日韩国产乱码电影| 在线综合+亚洲+欧美中文字幕| 日韩欧美国产一区在线观看| 久久久久久久久伊人| 国产精品天干天干在线综合| 亚洲色图清纯唯美| 免费成人av资源网| 成人激情动漫在线观看| 色屁屁一区二区| 欧美日韩www| 欧美一区二区三区婷婷月色| 国产午夜亚洲精品不卡| 亚洲欧洲成人自拍| 国内精品第一页| 在线观看国产91| 久久精子c满五个校花| 亚洲综合在线观看视频| 偷拍一区二区三区| 国产成人av电影在线| 欧美乱妇20p| 亚洲人被黑人高潮完整版| 精品国产免费人成电影在线观看四季 | 国产麻豆精品一区二区| 亚洲女人的天堂| 久久久久久久久97黄色工厂| 亚洲另类中文字| 日韩电影免费在线| 色综合久久久久综合体桃花网| 日韩午夜在线观看| 爽好久久久欧美精品| 91国内精品野花午夜精品| 久久久久久久久久久久电影 | 在线观看视频91| 国产精品午夜在线观看| 免费在线看一区| 欧美亚洲愉拍一区二区| 国产精品久久久久久户外露出| 久久国产综合精品| 色偷偷久久人人79超碰人人澡| 亚洲国产激情av| 国产在线一区二区| 欧美成人福利视频| 久久er99热精品一区二区| 欧美一卡2卡三卡4卡5免费| 亚洲成人动漫在线观看| 欧美性生交片4| 午夜视频久久久久久| 欧美男女性生活在线直播观看|