有没有办法在Go中获取当前源文件名?对于instrance fmt.Println
它。 (就像使用C
宏__FILE__
中所做的那样。)
这显然是为了调试目的。
答案 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