8g とか 6l とかのコマンドが (分かりにくい|打ちづらい) ということに定評のある Go ですが、パッケージを作るような場合は Makefile をこんな風に書くと make 一発でことが済むので簡単です。via http://blog.yappo.jp/yappo/archives/000697.html
でもちょっとした code snippet を試すのに Makefile を用意するのも面倒だし、ということでこんなやっつけ wrapper を二つ書きました。
gorun http://gist.github.com/239255 引数に与えたソースを complie, link, 実行する perl script.
$ cat hello.go package main import "os" func main() { arg := os.Args[1]; os.Stdout.WriteString("Hello " + arg + "\n"); } $ gorun hello.go world Hello world
一発で実行までできます。
[2009-11-20 追記] 最初の shell script 版はコマンドライン引数の扱いに問題があったので perl で書き直しました
goshell http://gist.github.com/236967 さすがにインタラクティブ shell、というわけにはいかないけども、ソースコードをファイルに書かないで入力していって、そのまま実行できる。
# gosh は Gauche のコマンドなので……
- \run compile, link, 実行
- \list 現在入力されているソースコードを表示
- \clear 入力されたソースを削除
- \quit 終了
packege main は自動で入ります。
$ goshell import "fmt" func fib(n int) int { if (n <= 2) { return 1 } return fib(n - 2) + fib(n - 1); } func main() { fmt.Printf("fib(30)=%d\n", fib(30)); } \list ---- package main import "fmt" func fib(n int) int { if (n <= 2) { return 1 } return fib(n - 2) + fib(n - 1); } func main() { fmt.Printf("fib(30)=%d\n", fib(30)); } ---- \run fib(30)=832040 \quit