go语言的类ipython交互式编程界面

bret victor 的 inventing on principle 是我看到过的最令人激动和震撼的演示,没有之一。虽然这位前苹果公司的ui大牛早在2012年就作出的这次演示,但他的影响一直没有减弱,编写程序过程中的任何变化,应该直接的产生反馈,让程序猿能够看到结果,或者说创造者需要对自己的创造的东西有实时的反馈。

之前一直在使用python,非常喜欢ipythonn notebook,使用ipython notenook来快速的完成一些原型非常的方便。现在由于项目的需要,要开始使用go语言,我就在想,有没有可以使用go的ipython环境呢?知乎上还有一个相关的帖子,可惜上面并没有给出有效的回答。

我做了些小功课,结果并不完美,这里分享给大家。

官方版 go playground

开始学习go语言最好的资源就是官方的tour了,大家可以一边学习,一边运行go的示例程序,直接获得运行结果。完美体现inventing on principle的理念。

xiam的go playground在官方的playground的基础上做了重大的改进。包括:

支持用户自定义的包

支持unsafe sandbox,用户可以访问网络,文件系统等

前端的容器化

想要使用自定义的包,需要修改相应sandbox的dockerfile

from xiam/go-playground/unsafebox
run go get github.com/myuser/mypackagerun go get github.com/otheruser/otherpackage
entrypoint [“/go/bin/sandbox”]

然后重新构建容器的image就好了。

虽然我们解决了自定义包的问题,但是,这个编辑器还是太弱了,而且也缺乏ipython的分段式交互。有没有更好的呢?

gophernotes

以上是我使用gophernotes的一次测试,当我运行一个循环的时候,如果写成一行,in[7],一切ok。到但是当我写成三行后,in[8],就无法输出正确的结果了。

后台给出的错误是:

error running goimports:
/tmp/979860191/func_proxy.go:4:4: expected declaration, found ‘for’
[i 08:18:56.621 notebookapp] saving file at /untitled.ipynb

Posted in 未分类

发表评论