Go是否提供REPL?


200

交互式环境对程序员非常有帮助。但是,Go似乎没有提供它。我的理解正确吗?

Answers:


164

不,Go不提供REPL。

但是,正如已经提到的,Go Playground(这是新的URL)非常方便。Go Authors也正在考虑向其中添加功能丰富的编辑器。

如果您想要本地的东西,请考虑安装hsandbox。简单地使用hsandbox go来运行该命令将拆分您的终端屏幕(使用screen),您可以在顶部编写代码,并在每次保存时在底部查看其执行输出。

有一个gotry标准去命令,用于计算表达式(使用可选的包名)中,并且可以像运行gotry 1+2,并gotry fmt 'Println("hello")'从壳。它不再可用,因为实际上没有多少人使用过它。

我还看到了用于为Go构建REPL的第三方项目,但是现在我只能找到其中两个的链接:igogo-repl。我不知道他们的工作情况如何。

我的两分钱:编译速度使Go可以编写REPL,因为它也有助于构建此处提到的工具,但是相同的速度使REPL的必要性降低。每次我想在Go中测试无法在Playground中运行的内容时,我都会打开一个简单.go文件并开始编码,然后直接运行代码。当goGo 1中的命令使一个命令的构建过程变得可行且更容易时,这将更加容易。

更新: Go的最新每周发布增加了go可用于轻松构建文件的命令:编写prog.go文件并运行go build prog.go && ./prog

更新2:使用Go 1,您可以直接运行Go程序go run filename.go

更新3gore是一个新项目,似乎很有趣。


TL; DR igo其他:Gore不太方便,因为它需要粘贴和Ctrl-D。像Reinteract for Go这样的东西太棒了。

4
似乎有两个REPL项目称为“ gore”。这个答案比答案中的答案更积极地维护:github.com/motemen/gore
Bijan

1
哈,我正要发布相同的内容。我一直在motemen/gore那里玩-很好。
Darragh Enright 2015年

github.com/motemen/gore gore非常好并且易​​于使用。
Junv


8

你也有一个最近(2013年3月)的项目称为戈尔斯利拉姆斯里尼瓦桑,这可能是有用的:

gore是golang代码的命令行评估程序-如果需要的话,是一个无循环的REPL。
它是go游乐场的替代品,同时使交互式地尝试一些代码变得更加容易:gore自动提供样板代码,例如import和package声明,以及main函数包装器
另外,由于它在您自己的计算机上运行,​​因此不会出于安全原因拒绝任何代码(与去游乐场的安全沙箱模式不同)。


7

您尝试过Go Playground吗?

关于围棋场

Go Playground是一种在golang.org的服务器上运行的Web服务。该服务接收Go程序,进行编译,链接并在沙箱中运行该程序,然后返回输出。


4

如果您是Vim用户,则vim-go插件(https://github.com/fatih/vim-go)提供了一个命令(GoRun)来运行并打印当前缓冲区的输出。您仍然必须包括主Go文件的所有样板代码,但是它仍然提供了一种方便的方法来在本地环境中快速测试代码段。

在此处输入图片说明

高温超导


我的vim在外壳中显示出来
vagabond

一直走!但是,要更进一步,我将删除样板代码,将我的“ package_test.go”放入拆分缓冲区中,并继续锤击:GoTest和:GoCoverage。我的2美分...
rolandvarga

3

GoSpeccy项目包括Go语言的限制子集的内置REPL。该实现使用goeval


2

不,但是您可以利用编译速度(如其他答案中所述)。

看看兰戈使用一个产生编译运行循环来模拟一个REPL。您也可以使用导入和语句启动它以开始交互式会话。


2

我在VSCode调试器上运气不错,但由于您无法从调试控制台Debug调用函数调用而受到的限制非常有限:#2225不支持的函数调用

基本上,您可以在正确配置launch.json文件后设置一个断点。然后,您可以在变量侧栏中的左侧向下钻取,并在调试控制台中输入变量表达式。 在VSCode中调试go文件以通过调试器进行自省





0

Go代码可以在带有Go扩展和Code Runner扩展的Visual Studio Code中以类似于REPL的方式运行。单击下面的屏幕快照中由鼠标光标标记的Run三角形▶,以运行代码并在Visual Studio Code底部的“输出”窗格中显示结果。

使用Go进行编程时,Visual Studio Code将建议可以安装其他Go扩展来扩展Visual Studio Code的功能。

在Visual Studio Code中运行

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.