Java の jshell、python のインタラクティブシェルのように、Go でも REPL(対話的にコードを逐次実行させる機能) gore
を使用できる。
Install
$ go get github.com/motemen/gore/cmd/gore
Usage
gore
コマンドを使用することで、REPL が実行される。
$ gore
gore version 0.5.0 :help for help
gore> :import "fmt"
gore> fmt.Println("hello")
hello
6
nil
gore>
必要なパッケージは :import
でインポートする。
-autoimport
フラグを有効にすることで、自動的にパッケージインポートを実行してくれる。
$ gore -autoimport
また -context
オプションで .go
ファイル名を渡すと、指定した go ファイル上の定義を引き継いだ上で、処理を gore REPL 上で続行できる。
context.go
package main
import "fmt"
func start() {
fmt.Println("exec context.go .")
}
$ gore -context context.go
gore version 0.5.0 :help for help
added file context.go
gore> start()
exec context.go .
gore> fmt.Println("on REPL.")
exec context.go .
on REPL.
9
nil
gore>
(一回呼んだ関数が何故か毎回呼ばれ続けてるので、一応 issue 投げたhttps://github.com/motemen/gore/issues/185)
REPL を終了するには、 <Ctrl-D>
を押す。
(^D to quit)
gore> %
gore 上のコード補完
gocode
をインストールすることで、gore
REPL 上でも IDE のようなコード補完機能が使用できる。
$ go get github.com/nsf/gocode
<tab>
キーを押すと、その時点で候補となる入力が自動挿入される。
入力候補は <tab>
キーを連続して押すことで切り替えられる。