Go をちょっと試すのに便利な wrapper 二題

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