交互式环境对程序员非常有帮助。但是,似乎Go没有提供它。我的理解是否正确?
答案 0 :(得分:142)
不,Go不提供REPL。
但是,正如已经提到的,Go Playground(这是新的URL)非常方便。 Go Authors也在考虑为其添加功能丰富的编辑器。
如果您想要本地的内容,请考虑安装hsandbox。只需使用hsandbox go
运行它就会拆分终端屏幕(使用screen
),您可以在顶部编写代码,并在每次保存时查看底部的执行输出。
标准Go命令中有gotry
,用于评估表达式(带有可选的包名称),并且可以像shell中的gotry 1+2
和gotry fmt 'Println("hello")'
一样运行。它已不再可用,因为实际使用它的人并不多。
我还看到了为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
直接运行程序
更新3 :gore
是一个看似有趣的新项目。
答案 1 :(得分:42)
答案 2 :(得分:8)
您最近(2013年3月)的项目名为 gore 来自Sriram Srinivasan,这可能非常有用:
gore是golang代码的命令行评估程序 - 没有循环的REPL,如果你愿意的话 它是go操场的替代品,同时更容易交互式地尝试一些代码: gore自动提供锅炉板代码,例如导入和包装声明以及主函数包装器。 /> 此外,由于它在您自己的计算机上运行,因此在安全方面不会拒绝任何代码(与操场的安全沙盒模式不同)。
答案 3 :(得分:7)
您是否尝试过Go Playground?
关于Go Playground
Go Playground是一个在golang.org服务器上运行的Web服务。 该服务接收Go程序,编译,链接和运行 程序在沙箱中,然后返回输出。
答案 4 :(得分:4)
如果你是Vim用户,vim-go插件(https://github.com/fatih/vim-go)提供一个命令(GoRun)来运行并打印当前缓冲区的输出。您仍然必须包含主Go文件的所有样板代码,但它仍然提供了一种在本地环境中快速测试代码段的便捷方法。
HTH
答案 5 :(得分:3)
答案 6 :(得分:2)
不,但您可以利用编译速度(如其他答案中所述)。
查看使用generate-compile-run循环模拟REPL的rango。您也可以使用导入和语句启动它以开始交互式会话。
答案 7 :(得分:1)
Gosh 是交互式Golang shell。目标是提供易于使用的交互式执行环境。
答案 8 :(得分:1)
我在VSCode调试器上运气不错,但由于无法从调试控制台Debug: Function Calls not supported #2225调用函数调用,它受到了相当大的限制。
基本上,您在正确配置{{1}}文件之后设置了一个断点。然后,您可以在变量侧栏中的左侧向下钻取,并在调试控制台中输入变量表达式。
答案 9 :(得分:0)
您可能还想尝试https://github.com/haya14busa/goplay 这样一来,您就可以从终端直接将Go代码文件运行到Go Playground
答案 10 :(得分:0)
还请检查www.gorepl.com中是否有REPL和其他REPL
答案 11 :(得分:0)