GolangでShebangせっていしてUNIXでもWindowsでも即起動するスクリプトの書き方

Go言語(Golang)でプログラム書くのはいいけど、ちょっと短いスクリプトを試したいときはコンパイルするのが手間。

go run script_file とすればインタプリタ的実行ができる。でも、いちいちこんな長いコマンド打つのもね~。

ということでUNIX系OSでは一行目に shebang と呼ばれるおなじみの呪文を書いておくことで、実行属性付きのGoスクリプトファイルを直接実行することができる。

//usr/bin/go run $0 $@ ; exit
package main
import "fmt"

func main() {
    fmt.Printf( "Hello, World\n" )
}

こんなふうに一行目を書く。ほかのスクリプト言語に比べるとクソ長いが気にしない・・・。

まあ、ここまでは一般常識だと思う。ところで Windows では? こちらも Perl/PHP などで設定している人はあまり見ないが、似たようなことができる。

  • Goがすでにインストールされていてパスが通っている
  • Goスクリプトは拡張子 .go だとする

前提で、以下のバッチファイルを管理者権限で実行する。

SETX PATHEXT %PATHEXT%;.GO -m
ASSOC .go=goscript
FOR /F "usebackq" %%t IN (`where go`) DO SET WHERE_IS_MY_GO=%%t
FTYPE goscript=%WHERE_IS_MY_GO% run %%0 %%*
PAUSE

これでエクスプローラからダブルクリックしようがコマンドラインからファイルを直接呼び出そうがGoスクリプトが実行される。

といってもまじめにアプリケーションつくってる人には関係ない話かもしんない・・・。

Go言語によるWebアプリケーション開発

Go言語によるWebアプリケーション開発