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