有没有办法在 Go 中的应用程序上下文中访问交互式 REPL 控制台?
作为参考,我正在考虑Ruby 的 irb或pry(以及基于它们构建的Ruby On Rails 控制台)、 Node.js REPL、Scala REPL(和Play console)或Elixir 的 IEx 的功能。所有这些都是用于在应用程序上下文中打开 REPL 的开发(或生产!)工具。例如,它们允许访问应用程序的类、对象和常量,并通过扩展与应用程序的资源(例如数据库)进行交互。
有一些 Go REPL,例如gore,但尚不清楚如何将它们插入应用程序。
我想可以启动一个gore会话,然后导入所有包,但是 中发生的初始化又如何呢main?
我的直觉告诉我,应该有一种方法来提供另一种“仅 REPL”main来编译不同的二进制文件,将应用程序作为 REPL 启动 - 而不是 HTTP 服务器。
有没有既定的方法可以做到这一点?或者参考实现?
你可以尝试go-pry:https://github.com/d4l3k/go-pry
这与 Rails 控制台非常接近。只需import "github.com/d4l3k/go-pry/pry"在您的文件中添加pry.Pry()您想要开始会话的位置即可。之后你只需调用go-pry main.go而不是go main.go.
但据我所知,没有一个标准的解决方案。