Go提供REPL吗?

z_a*_*xis 186 go read-eval-print-loop

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

Mos*_*afa 152

不,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

更新3:这gore是一个看似有趣的新项目.

  • 似乎有两个名为"gore"的REPL项目.这个比答案中的那个更积极地维护:https://github.com/motemen/gore (4认同)
  • 感谢hsandbox项目,看起来很有用! (3认同)
  • 哈,我正要发同样的东西。我刚刚在那里玩了 `motemen/gore` - 非常好。 (2认同)

Bij*_*jan 51

试试motemen/gore

另一个Go REPL很好用.具有行编辑,代码完成等功能.

https://github.com/motemen/gore

在此输入图像描述


Von*_*onC 8

您还有一个名为Gore来自Sriram Srinivasan的最近(2013年3月)项目,该项目非常有用:

gore是golang代码的命令行评估程序 - 如果你愿意的话,没有循环的REPL.
它是go游乐场的替代品,同时更容易交互式地尝试一些代码:gore自动提供锅炉板代码,例如导入和包声明以及主函数包装器.
此外,由于它在您自己的计算机上运行,​​因此在安全方面不会拒绝任何代码(与操场的安全沙盒模式不同).


pet*_*rSO 7

你试过Go Playground吗?

关于Go Playground

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


Pat*_*eld 7

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

在此处输入图片说明

HTH


小智 5

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