gorunでGolangのソースをシェルスクリプトのように実行してみる
https://github.com/erning/gorun
gorunをちょっと試してみました。試した内容としては
- gorunをローカルにgo getで入れる
- Golangでソースを書くが、importで他のライブラリを使うものとする
- ソースをGOPATHの外の場所に置き、シェルスクリプトのようにソースを指定して実行してみる
となります。
他のライブラリを使ってみたのは、Golangで処理を書く場合に単体で書くことは少ないと思ったためです。
以下、やってみたことについて纏めてみます。
やってみたこと
1. gorunなど必要なものを取得
「go get」で必要なものを取得します。今回は「gorun」と、ソースの中で「go-linq」を使ったので、この2つを「go get」で取得します。
https://github.com/ahmetb/go-linq
$ go get github.com/erning/gorun $ go get github.com/ahmetb/go-linq/v3
2. gorunの取得先を確認
「go get」で取得すると、gorunの本体が「$GOPATH/bin/」配下に取得されます。この「$GOPATH/bin/」にパスが通っているか、もしくは「gorun」がパスが通っている任意の場所に入っていることを確認します。
3. ソースを書く
任意の処理を通常のGolangのように「~.go」のファイル名で実装します。ただし先頭行には「#!/usr/bin/env gorun」を記載します。
これ以外は通常のGolangの処理そのままです。私は 先に挙げた「go-linq」のREADMEのソースをそのまま使いました。
なお、エディタによっては先頭行の「#!/usr/bin/env gorun」があると入力補完やフォーマットが効かないこともあるようです。
この場合は先頭行をコメントアウトして実装し(実装中は「$ go run ~.go」などで動作確認し)、実装が終わったら先頭行を復活させればいいでしょう。
4. ソースの実行
GOPATH以外でも動くかを確認するため、ソースを任意の場所にコピーします。
ソースに実行権限をつけ、「$ ./~.go」とシェルスクリプトのようにファイル名を指定して実行してみます。