GoはREPLを提供していますか?


200

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

回答:


164

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

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

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

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

GoのREPLを構築するためのサードパーティのプロジェクトも見ましたが、現在はigogo-replの 2 つへのリンクしか見つかりません。どれだけうまく機能するかはわかりません。

私の2セント:コンパイルの速度は、ここで説明したツールの構築にも役立つため、GoでのREPLの作成を可能にしますが、同じ速度でREPLの必要性が少なくなります。Goでプレイグラウンドで実行できないものをテストするたびに、単純な.goファイルを開いてコーディングを開始し、コードを実行します。goGo 1 のコマンドで1コマンドのビルドプロセスが可能になり、はるかに簡単になると、これはさらに簡単になります。

更新:go非常に簡単にファイルを構築するために使用できるGo追加コマンドの最新の週次リリース:prog.goファイルを書き込んで実行go build prog.go && ./prog

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

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


TL; DR igoその他:貼り付けとCtrl-Dが必要なため、ゴアはあまり便利ではありません。Reinteract for Goのようなものは素晴らしいソースです。

4
「ゴア」と呼ばれる2つのREPLプロジェクトがあるようです。これは、回答よりも積極的に維持されています:github.com/motemen/gore
Bijan

1
ハ、私も同じことを投稿しようとしていました。私はmotemen/goreそこで遊んでいます-それはかなり良いです。
Darragh Enright 2015年

github.com/motemen/gore goreはかなり使いやすく、使い方も簡単です。
Junv


8

また、Sriram Srinivasanのgoreと呼ばれる最近(2013年3月)のプロジェクトもあります。

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


7

Go Playgroundを試しましたか?

Go Playgroundについて

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


4

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

ここに画像の説明を入力してください

HTH


現在のバッファーでGoRun出力を作成する方法。私のvim、シェルに表示する
vagabond

vim-goずっと!ただし、これをさらに一歩進めるために、ボイラープレートコードを削除し、 'package_test.go'を分割バッファーに入れて、:GoTest&:GoCoverageを打ち続けます。私の2セント...
rolandvarga 2018

3

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


2

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

REPLを模倣するために、generate-compile-runループを使用するrangoを見てください。インタラクティブセッションを開始するインポートとステートメントで開始することもできます。


2

VSCodeデバッガーで運が良かったのですが、デバッグコンソールDebug:Function Calls not supported#2225から関数呼び出しを呼び出せない限り、かなり制限があります。

基本的には、launch.jsonファイルを適切に構成した後でブレークポイントを設定します。次に、変数のサイドバーの左側をドリルダウンして、デバッグコンソールに変数式を入力できます。 VSCodeでgoファイルをデバッグして、デバッガーでイントロスペクトする





0

Goコードは、Visual StudioコードでGo拡張機能とCode Runner拡張機能を使用してREPLのような方法で実行できます。下のスクリーンショットでマウスカーソルによってマークされている実行三角形▶をクリックしてコードを実行し、結果をVisual Studio Codeの下部にある[出力]ペインに表示します。

Go Visual Studio Codeを使用してプログラミングする場合、Visual Studio Codeの機能を拡張するためにインストールできる追加のGo拡張機能が提案されます。

Visual Studio Codeで実行する

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.