猿问

_file_ 或 _line_ 在 golang 中类似

有没有在往前走功能就是喜欢类似"_file_""_line_"在旅途中,要知道是谁打来的过程中运行的时间特定的功能?在 C 中,我们有"_file_"可以作为宏调用的行。如何在 go 中做到这一点?


一只甜甜圈
浏览 274回答 3
3回答

海绵宝宝撒

如果您正在使用该log包,您可以指示记录器为条目添加各种信息的前缀。您可能对Lshortfile常量最感兴趣,这将导致d.go:23. 或者,Llongfile可以打印文件的完整路径(例如/a/b/c/d.go:23)。如果您不想使用该log包,也可以使用runtime.Caller(),这是日志包内部使用的。它不像 C 宏那样直接,但您可以将它隐藏在函数后面(并指定正确的调用深度)。您可以通过示例(第 140 行)查看日志包是如何实现的。

不负相思意

请参阅runtime和runtime.debug包,特别是Stack,PrintStack或Caller函数。Stack 将调用 goroutine 的堆栈跟踪格式化为 buf 并返回写入 buf 的字节数。如果全部为真,Stack 将所有其他 goroutine 的堆栈跟踪格式化为当前 goroutine 跟踪后的 buf。如果您使用调试信息进行编译,那么这将包含源代码中的行号
随时随地看视频慕课网APP

相关分类

Go
我要回答