web-dev-qa-db-ja.com

GoはREPLを提供しますか?

インタラクティブな環境はプログラマにとって非常に役立ちます。ただし、Goでは提供されていないようです。私の理解は正しいですか?

181
z_axis

いいえ、GoはREPLを提供していません。

ただし、すでに述べたように、 Go Playground (これは新しいURLです)は非常に便利です。 Go Authorは、機能豊富なエディターを追加することも検討しています。

ローカルなものが必要な場合は、 hsandbox のインストールを検討してください。単にhsandbox goで単純に実行すると、端末画面が(screenで)分割され、上部でコードを記述し、保存するたびに下部でその実行出力を確認できます。

式(オプションのパッケージ名)を評価するために使用される標準のGoコマンドにはgotryがあり、シェルからgotry 1+2およびgotry fmt 'Println("hello")'のように実行できます。多くの人が実際に使用したことはないため、もう利用できません。

Go用のREPLを構築するためのサードパーティプロジェクトも見ましたが、今ではそのうちの2つへのリンクしか見つけることができません: igo および go-repl =。どれだけうまく機能するかはわかりません。

私の2セント:コンパイルの速度はGoのREPLの記述を可能にします。これはここで言及したツールの構築にも役立ちましたが、同じ速度でREPLの必要性は低くなります。 GoでPlaygroundで実行できないものをテストするたびに、単純な.goファイルを開いてコーディングを開始し、単純にコードを実行します。 Go 1のgoコマンドを使用すると、1コマンドのビルドプロセスが可能になり、さらに簡単になります。

UPDATE:Goの最新の週刊リリースに、goコマンドが追加されました。これは、ファイルを非常に簡単に作成するために使用できます:prog.goファイルを作成してgo build prog.go && ./progを実行

UPDATE 2:Go 1では、go run filename.goでgoプログラムを直接実行できます

UPDATE 3gore は興味深いと思われる新しいプロジェクトです。

150
Mostafa

Motemen/goreを試す

さらに別のGo REPLはうまく機能します。行編集、コード補完などの機能を備えています。

https://github.com/motemen/gore

enter image description here

45
Bijan

また、 Sriram Srinivasan からのgoreという最近の(2013年3月)プロジェクトもあります。便利である:

goreはgolangコードのコマンドラインエバリュエーターです。ループがない場合は、REPLを使用します。
goプレイグラウンドの代わりになりますが、インタラクティブにコードを試すのがはるかに簡単になります:goreは、インポートおよびパッケージ宣言などの定型コードを自動的に提供し、メイン関数ラッパー
また、独自のコンピューターで実行されるため、セキュリティの理由でコードが拒否されることはありません(プレイグラウンドのセーフサンドボックスモードとは異なります)。

8
VonC

Go Playground を試しましたか?

Go Playgroundについて

Go Playgroundは、golang.orgのサーバーで実行されるWebサービスです。サービスは、Goプログラムを受信し、サンドボックス内でプログラムをコンパイル、リンク、および実行してから、出力を返します。

7
peterSO

Vimユーザーの場合、vim-goプラグイン( https://github.com/fatih/vim-go )は、現在の出力を実行して印刷するコマンド(GoRun)を提供しますバッファ。メインのGoファイルの定型コードをすべて含める必要がありますが、ローカル環境でコードスニペットをすばやくテストする便利な方法を提供します。

enter image description here

HTH

4

GoSpeccy プロジェクトには、Go言語の制限されたサブセットの組み込みREPLが含まれています。実装では goeval を使用しています。

3
user811773

いいえ、ただし、コンパイルの速度を活用することができます(他の回答で述べたように)。

Generate-compile-runループを使用してREPLを模倣する rango をご覧ください。インポートとステートメントを使用して開始し、対話型セッションを開始することもできます。

2
emicklei

GoshはインタラクティブなGolangシェルです。目標は、使いやすいインタラクティブな実行環境を提供することです。

https://github.com/mkouhei/gosh

1
raittes

https://github.com/haya14busa/goplay を試してみることもできます

0
Montaro

Go REPLおよび他のREPLについて www.gorepl.com も確認してください。

0
donvk