回答編集履歴

2 書式改善

nobonobo

nobonobo score 2206

2018/10/20 08:19  投稿

「go run」は一時的にテンポラリ領域に
バイナリを生成して実行するコマンドであり、
実運用時とは異なる環境下で動作する簡易実行コマンドです。
「go run」は一時的にテンポラリ領域にバイナリを生成して実行するコマンドであり、実運用時とは異なる環境下で動作する簡易実行コマンドです。
ビルド結果と挙動の違いが問題なのであれば「go run」の利用をやめましょう。
例えば「go build」してエラーがなければバイナリを起動するというようにしましょう。
ビルド結果と挙動の違いが問題なのであれば「go run」の利用をやめましょう。例えば「go build」してエラーがなければバイナリを起動するというようにしましょう。
例「go build -o app <メインパッケージパス> && ./app」
といったシェルコマンドで動作確認をしましょう。
例「go build -o app <メインパッケージパス> && ./app」といったシェルコマンドで動作確認をしましょう。
- os.Getwd() ワーキングディレクトリ(カレントフォルダ)の取得
- os.Executable() 実行ファイル(自分自身)パスの取得
それぞれ関数名の通りの機能ですので、
目的に応じて使い分けましょう。
それぞれ関数名の通りの機能ですので、目的に応じて使い分けましょう。
もちろん成果物バイナリの置いてあるフォルダをカレントフォルダに切り替えてから
起動する運用であればos.Getwdで良いと思いますし、
もちろん成果物バイナリの置いてあるフォルダをカレントフォルダに切り替えてから起動する運用であればos.Getwdで良いと思いますし、「go run」による起動でも問題にならないでしょう。
カレントフォルダがどこを指しているか不定の状態で
運用するようなバイナリであればos.Executableを
利用することになると思います。
カレントフォルダがどこを指しているか不定の状態で運用するようなバイナリであればos.Executableを利用することになると思います。
1 わかりにくい文の修正

nobonobo

nobonobo score 2206

2018/10/20 08:16  投稿

「go run」は一時的にテンポラリ領域に
バイナリを生成して実行するコマンドであり、
実運用時とは異なる環境下で動作する簡易実行コマンドです。
ビルド結果と挙動の違いが問題なのであれば「go run」の利用をやめましょう。
例えば「go build」してエラーがなければバイナリを起動するというようにしましょう。
例「go build -o app <メインパッケージパス> && ./app」
といったシェルコマンドで動作確認をしましょう。
- os.Getwd() ワーキングディレクトリ(カレントフォルダ)の取得
- os.Executable() 実行ファイル(自分自身)パスの取得
それぞれ関数名の通りの機能ですので、
目的に応じて使い分けましょう。
もちろん成果物バイナリの起動にカレントフォルダに切り替えてから
もちろん成果物バイナリの置いてあるフォルダをカレントフォルダに切り替えてから
起動する運用であればos.Getwdで良いと思いますし、
カレントフォルダがどこを指しているか不定の状態で
運用するようなバイナリであればos.Executableを
利用することになると思います。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る