【发布时间】:2011-12-15 00:21:57
【问题描述】:
交互式环境对程序员非常有帮助。但是,Go 似乎没有提供它。我的理解正确吗?
【问题讨论】:
交互式环境对程序员非常有帮助。但是,Go 似乎没有提供它。我的理解正确吗?
【问题讨论】:
不,Go 不提供REPL(读取-评估-打印循环)。
不过,如前所述,Go Playground(这是新的 URL)非常方便。 Go 作者也在考虑为其添加功能丰富的编辑器。
如果您想要本地的东西,请考虑安装hsandbox。简单地使用hsandbox go 运行它会拆分您的终端屏幕(使用screen),您可以在其中在顶部编写代码并在每次保存时在底部查看其执行输出。
在标准 Go 命令中有一个 gotry,用于评估表达式(带有可选的包名称),并且可以像 gotry 1+2 和 gotry fmt 'Println("hello")' 从 shell 运行。它不再可用,因为实际使用它的人并不多。
我还看到了为 Go 构建 REPL 的第三方项目,但现在我只能找到其中两个的链接:igo 和 go-repl。我不知道它们的效果如何。
我的两分钱:编译速度使得为 Go 编写 REPL 成为可能,因为它也有助于构建这里提到的工具,但同样的速度使得 REPL 的必要性降低。每次我想在 Go 中测试一些我无法在 Playground 中运行的东西时,我都会打开一个简单的 .go 文件并开始编码并简单地运行代码。当 Go 1 中的 go 命令使单命令构建过程成为可能并且更容易时,这将变得更加容易。
更新: Go 的最新每周版本添加了go 命令,可用于非常轻松地构建文件:编写prog.go 文件并运行go build prog.go && ./prog
更新 2:使用 Go 1,您可以使用 go run filename.go 直接运行 go 程序
更新 3:gore 是一个看起来很有趣的新项目。
【讨论】:
motemen/gore - 非常好。
【讨论】:
您最近(2013 年 3 月)还有一个来自 Sriram Srinivasan 的名为 gore 的项目,它可能很有用:
gore 是一个用于 golang 代码的命令行评估器——如果你愿意的话,它是一个没有循环的 REPL。
它是 go 游乐场的替代品,同时更容易以交互方式尝试代码:gore 自动提供样板代码,例如导入和包声明以及 main 函数包装器。
此外,由于它在您自己的计算机上运行,因此不会出于安全原因拒绝任何代码(与 go playground 的安全沙盒模式不同)。
【讨论】:
你试过Go Playground吗?
关于围棋游乐场
Go Playground 是在 golang.org 的服务器上运行的 Web 服务。 该服务接收一个 Go 程序,编译、链接并运行 在沙箱中运行程序,然后返回输出。
【讨论】:
如果您是 Vim 用户,vim-go 插件 (https://github.com/fatih/vim-go) 提供了一个命令 (GoRun) 来运行和打印当前缓冲区的输出。您仍然必须包含主 Go 文件的所有样板代码,但它仍然提供了一种在本地环境中快速测试代码 sn-ps 的便捷方法。
HTH
【讨论】:
不,但您可以利用编译速度(如其他答案中所述)。
查看rango,它使用生成-编译-运行循环来模拟 REPL。您也可以使用导入和语句来启动它以开始交互式会话。
【讨论】:
Gosh 是交互式 Golang shell。目标是提供一个易于使用的交互式执行环境。
【讨论】:
我在 VSCode 调试器上遇到了一些运气,但它相当有限,因为您无法从调试控制台 Debug: Function Calls not supported #2225 调用函数调用。
基本上,您在正确配置 launch.json 文件后设置断点。然后您可以在左侧的变量侧栏中向下钻取并在调试控制台中输入变量表达式。
【讨论】:
你也可以试试https://github.com/haya14busa/goplay 这使您可以将 go 代码文件从终端直接运行到 Go Playground
【讨论】:
请查看 www.gorepl.com 以获取 go REPL 和其他 REPL
【讨论】: