2017-10-05 14 views
1

Goで現在のソースファイル名を取得する方法はありますか?そしてinstranceのためにfmt.Printlnそれ。 (C__FILE__マクロを実行しているように)現在のファイル名を参照する

これは明らかにデバッグ用です。

答えて

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

関連する問題