交互环境对程序员非常有帮助。然而,Go似乎并没有提供这一点。我的理解正确吗?
你试过去操场吗?
关于Go游乐场 The Go Playground是一个运行在golang.org服务器上的web服务。 服务接收一个Go程序,编译、链接并运行 .在沙箱中编程,然后返回输出
关于Go游乐场
不,Go不提供REPL(read-eval-print循环)。
然而,正如前面提到的,去操场非常方便。Go Authors也在考虑添加一个功能丰富的编辑器。
如果你想要本地的东西,可以考虑安装hsandbox。简单地用hsandbox go运行它会分割你的终端屏幕(用screen),你可以在顶部编写代码,并在每次保存时在底部看到它的执行输出。
hsandbox go
screen
标准Go命令中有一个gotry,用于计算表达式(具有可选的包名),并且可以像gotry 1+2和gotry fmt 'Println("hello")'一样从shell中运行。它不再可用,因为没有多少人真正使用它。
gotry
gotry 1+2
gotry fmt 'Println("hello")'
我也见过为Go构建REPL的第三方项目,但现在我只能找到其中两个的链接:igo和go-repl。我不知道它们的效果如何。
我的观点:编译速度使编写REPL成为可能,因为它也有助于构建这里提到的工具,但同样的速度使REPL变得不那么必要了。每次我想在Go中测试一些我不能在Playground中运行的东西时,我都会打开一个简单的.go文件并开始编码并简单地运行代码。当Go 1中的go命令使一个命令构建过程成为可能并且更容易时,这将更加容易。
.go
go
更新:最新每周发布的Go添加了go命令,可以用来非常容易地构建一个文件:编写你的prog.go文件并运行go build prog.go && ./prog
prog.go
go build prog.go && ./prog
更新2:在Go 1中,你可以直接使用go run filename.go运行Go程序
go run filename.go
更新3: gore是一个看起来很有趣的新项目。
gore
不能,但是您可以利用编译的速度(正如在其他回答中提到的)。
看看rango,它使用生成-编译-运行循环来模拟REPL。您还可以使用导入和语句启动它,以开始交互式会话。
你还有一个最近的(2013年3月)项目,名为戈尔< a href = " https://github.com/sriram-srinivasan/gore " > < / >,来自斯利斯,它可能很有用:
gore是golang代码的命令行求值器——如果你愿意的话,这是一个没有循环的REPL 它是go playground的替代品,同时使它更容易交互式地尝试代码位:Gore自动提供样板代码,如导入和包声明以及主函数包装器. 此外,由于它运行在你自己的计算机上,没有代码会因为安全原因而被拒绝(不像go playground的安全沙盒模式)
GoSpeccy项目包含一个内置的REPL,它是Go语言的一个受限子集。这个实现使用了goeval。
如果你是一个Vim用户,Vim -go插件(https://github.com/fatih/vim-go)提供了一个命令(GoRun)来运行和打印当前缓冲区的输出。您仍然必须包含主Go文件的所有样板代码,但它仍然提供了一种在本地环境中快速测试代码片段的方便方法。
另一个Go REPL工作得很好。具有行编辑功能,
https://github.com/motemen/gore
天啊是交互式Golang shell。目标是提供一个易于使用的交互式执行环境。
https://github.com/mkouhei/gosh
你也可以尝试https://github.com/haya14busa/goplay 这使您可以从终端直接运行go代码文件到go Playground
请检查www.gorepl.com中的go REPL和其他REPL
我有一些运气与VSCode调试器,但它是相当有限的,就目前而言,你不能调用函数调用从调试控制台调试:不支持函数调用#2225。
launch.json
Go代码可以在Visual Studio code中使用Go扩展和code Runner扩展以类似repl的方式运行。点击下面截图中由鼠标光标标记的运行三角形▶以运行代码,并在Visual Studio code底部的输出窗格中显示结果。
当使用Go Visual Studio Code编程时,会建议安装额外的Go扩展来扩展Visual Studio Code的功能。