【问题标题】:Does Go provide REPL?Go 提供 REPL 吗?
【发布时间】:2011-12-15 00:21:57
【问题描述】:

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

【问题讨论】:

    标签: go read-eval-print-loop


    【解决方案1】:

    不,Go 不提供REPL(读取-评估-打印循环)。

    不过,如前所述,Go Playground(这是新的 URL)非常方便。 Go 作者也在考虑为其添加功能丰富的编辑器。

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

    在标准 Go 命令中有一个 gotry,用于评估表达式(带有可选的包名称),并且可以像 gotry 1+2gotry fmt 'Println("hello")' 从 shell 运行。它不再可用,因为实际使用它的人并不多。

    我还看到了为 Go 构建 REPL 的第三方项目,但现在我只能找到其中两个的链接:igogo-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 程序

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

    【讨论】:

    • TL;DR igo 其他:Gore 不太方便,因为它需要粘贴和 Ctrl-D。像 Reinteract for Go 这样的东西会很棒。
    • 似乎有两个名为“gore”的 REPL 项目。这个比答案中的维护得更积极:github.com/motemen/gore
    • 哈,我正要发同样的东西。我刚刚在那里玩了motemen/gore - 非常好。
    • github.com/motemen/gore gore 挺好用的。
    【解决方案2】:

    试试 motemen/gore

    又一个运行良好的 Go REPL。以行编辑为特色, 代码完成等等。

    https://github.com/motemen/gore

    【讨论】:

    • 您使用什么程序来显示您的输入?我喜欢那个
    • @jclasley 它在 repo 的自述文件中。 github.com/cho45/KeyCast 仅限 MacOS
    【解决方案3】:

    您最近(2013 年 3 月)还有一个来自 Sriram Srinivasan 的名为 gore 的项目,它可能很有用:

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

    【讨论】:

      【解决方案4】:

      你试过Go Playground吗?

      关于围棋游乐场

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

      【讨论】:

        【解决方案5】:

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

        HTH

        【讨论】:

        • 如何让GoRun输出在当前缓冲区。我的vim,在shell中显示
        • vim 一路走好!但是,为了更进一步,我将删除样板代码,将我的“package_test.go”放入拆分缓冲区并继续锤击:GoTest 和:GoCoverage。我的 2 美分...
        【解决方案6】:

        GoSpeccy 项目包含 Go 语言受限子集的内置 REPL。该实现使用goeval

        【讨论】:

          【解决方案7】:

          不,但您可以利用编译速度(如其他答案中所述)。

          查看rango,它使用生成-编译-运行循环来模拟 REPL。您也可以使用导入和语句来启动它以开始交互式会话。

          【讨论】:

            【解决方案8】:

            Gosh 是交互式 Golang shell。目标是提供一个易于使用的交互式执行环境。

            https://github.com/mkouhei/gosh

            【讨论】:

              【解决方案9】:

              我在 VSCode 调试器上遇到了一些运气,但它相当有限,因为您无法从调试控制台 Debug: Function Calls not supported #2225 调用函数调用。

              基本上,您在正确配置 launch.json 文件后设置断点。然后您可以在左侧的变量侧栏中向下钻取并在调试控制台中输入变量表达式。

              【讨论】:

                【解决方案10】:

                你也可以试试https://github.com/haya14busa/goplay 这使您可以将 go 代码文件从终端直接运行到 Go Playground

                【讨论】:

                  【解决方案11】:

                  请查看 www.gorepl.com 以获取 go REPL 和其他 REPL

                  【讨论】:

                    【解决方案12】:

                    Go 代码可以在带有 Go 扩展和 Code Runner 扩展的 Visual Studio Code 中以类似 REPL 的方式运行。单击下面屏幕截图中鼠标光标标记的运行三角形 ▶ 运行代码并在 Visual Studio Code 底部的输出窗格中显示结果。

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

                    【讨论】:

                      猜你喜欢
                      • 2017-02-03
                      • 2013-11-11
                      • 2012-12-18
                      • 2020-11-23
                      • 1970-01-01
                      • 2023-03-13
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多