Go 应用程序上下文中的 REPL 控制台

tom*_*ave 5 go

有没有办法在 Go 中的应用程序上下文中访问交互式 REPL 控制台?

作为参考,我正在考虑Ruby 的 irbpry(以及基于它们构建的Ruby On Rails 控制台)、 Node.js REPLScala REPL(和Play console)或Elixir 的 IEx 的功能。所有这些都是用于在应用程序上下文中打开 REPL 的开发(或生产!)工具。例如,它们允许访问应用程序的类、对象和常量,并通过扩展与应用程序的资源(例如数据库)进行交互。

有一些 Go REPL,例如gore,但尚不清楚如何将它们插入应用程序。

我想可以启动一个gore会话,然后导入所有包,但是 中发生的初始化又如何呢main

我的直觉告诉我,应该有一种方法来提供另一种“仅 REPL”main来编译不同的二进制文件,将应用程序作为 REPL 启动 - 而不是 HTTP 服务器。

有没有既定的方法可以做到这一点?或者参考实现?

mbu*_*ann 0

你可以尝试go-pryhttps://github.com/d4l3k/go-pry

这与 Rails 控制台非常接近。只需import "github.com/d4l3k/go-pry/pry"在您的文件中添加pry.Pry()您想要开始会话的位置即可。之后你只需调用go-pry main.go而不是go main.go.

但据我所知,没有一个标准的解决方案。