21
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Goで__FILE__、__DIR__のようなものをこさえる

Last updated at Posted at 2013-11-10

カレントファイルのファイル名やディレクトリ名を知りたい

runtime.Callerを利用し、stackの返り値を利用すれば解決できる、というのを
グーグル先生で検索して知った。

元ソース
https://gist.github.com/abrookins/2732551#file-gistfile1-go

code snippet

import (
  "runtime"
  "path"
)

// __FILE__
func GetCurrentFile() string {
  _, filename, _, _ := runtime.Caller(1)
  return filename
}

// __DIR__
func GetCurrentDir() string {
  _, filename, _, _ := runtime.Caller(1)
  return path.Dir(filename)
}

利用シーン

ライブラリとコマンドライン、それぞれのソースコードを
同一プロダクト且つ別ディレクトリで管理する形にし、
テスト実行時・コマンド実行時に解決するファイルパスを
都度解決させたいという場合に役に立つ。

takarabagoというtakarabakoのパクリプロダクトをGoの勉強目的で書いてみた時に利用した。

21
21
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?