交互环境对程序员非常有帮助。然而,Go似乎并没有提供这一点。我的理解正确吗?


当前回答

不,Go不提供REPL(read-eval-print循环)。

然而,如前所述,Go Playground非常方便。Go Authors也在考虑添加一个功能丰富的编辑器。

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

在标准的Go命令中有一个gotry,用来计算表达式(有一个可选的包名),可以像gotry 1+2和gotry fmt 'Println("hello")'一样从shell运行。它不再可用,因为没有多少人真正使用它。

我也看到过为Go构建REPL的第三方项目,但现在我只能找到其中两个的链接:igo和Go - REPL。我不知道它们的效果如何。

我的观点:编译速度使编写REPL成为可能,因为它也有助于构建这里提到的工具,但同样的速度使REPL变得不那么必要了。每次我想在Go中测试一些我不能在Playground中运行的东西时,我都会打开一个简单的. Go文件并开始编码并简单地运行代码。当go 1中的go命令使一个命令构建过程成为可能时,这将更加容易。

更新:最新的每周发布的Go添加了Go命令,可以用来非常容易地建立一个文件:写你的程序。然后运行Go build prog。Go && ./prog

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

更新3:gore是一个看起来很有趣的新项目。

其他回答

GoSpeccy项目包括一个内置的Go语言的一个受限子集的REPL。实现使用了goeval。

不,Go不提供REPL(read-eval-print循环)。

然而,如前所述,Go Playground非常方便。Go Authors也在考虑添加一个功能丰富的编辑器。

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

在标准的Go命令中有一个gotry,用来计算表达式(有一个可选的包名),可以像gotry 1+2和gotry fmt 'Println("hello")'一样从shell运行。它不再可用,因为没有多少人真正使用它。

我也看到过为Go构建REPL的第三方项目,但现在我只能找到其中两个的链接:igo和Go - REPL。我不知道它们的效果如何。

我的观点:编译速度使编写REPL成为可能,因为它也有助于构建这里提到的工具,但同样的速度使REPL变得不那么必要了。每次我想在Go中测试一些我不能在Playground中运行的东西时,我都会打开一个简单的. Go文件并开始编码并简单地运行代码。当go 1中的go命令使一个命令构建过程成为可能时,这将更加容易。

更新:最新的每周发布的Go添加了Go命令,可以用来非常容易地建立一个文件:写你的程序。然后运行Go build prog。Go && ./prog

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

更新3:gore是一个看起来很有趣的新项目。

Go代码可以在Visual Studio code中使用Go扩展和code Runner扩展以类似repl的方式运行。点击下面截图中由鼠标光标标记的运行三角形▶以运行代码,并在Visual Studio code底部的输出窗格中显示结果。

当使用Go Visual Studio Code编程时,会建议安装额外的Go扩展来扩展Visual Studio Code的功能。

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

尝试motemen /戈尔

另一个工作得很好的Go REPL。具有行编辑功能, 代码完成,等等。

https://github.com/motemen/gore