参考当前文件名

时间:2017-10-05 17:58:07

标签: debugging go

有没有办法在Go中获取当前源文件名?对于instrance fmt.Println它。 (就像使用C__FILE__中所做的那样。)

这显然是为了调试目的。

2 个答案:

答案 0 :(得分:4)

runtime.Caller(0)应该返回一些项目,其中一项是调用它的函数的文件名。

该参数指示要跳过的功能的深度,以便您想要将此功能抽象为单独的功能,但希望获取其所在位置的文件名。

答案 1 :(得分:2)

要进行调试,请使用日志包并启用log.Lshortfile或log.Llongfile标志:

package main

import (
    "log"
    "os"
)

func main() {
    shortLogger := log.New(os.Stdout, "", log.LstdFlags|log.Lshortfile)
    shortLogger.Println("short")

    longLogger := log.New(os.Stdout, "", log.LstdFlags|log.Llongfile)
    longLogger.Println("long")
}

// 2009/11/10 23:00:00 main.go:10: short
// 2009/11/10 23:00:00 /tmp/sandbox813987715/main.go:13: long

https://play.golang.org/p/2X7IeJHSmk