Go语言的类IPython 交互式编程界面

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

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

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

官方版 Go Playground 

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

这个Tour内嵌了一个Go的Playgound,大家可以在github上找到该项目的代码。

该项目包含一个前端和一个容器化的后台Sandbox,以保证程序运行的安全性。

然而go playground还有一些限制:

  • 不能import 用户定义的包
  • 编辑器弱,没有语法高亮,没有提示,没有undo ...
  • 没有Ipython那种分段式的交互

XIAM版Go Playground

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

  • 支持用户自定义的包
  • 支持unsafe sandbox,用户可以访问网络,文件系统等
  • 前端的容器化

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

1FROM xiam/go-playground/unsafebox 2 3RUN go get github.com/myuser/mypackage 4RUN go get github.com/otheruser/otherpackage 5 6ENTRYPOINT ["/go/bin/sandbox"]

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

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

GopherNotes

Jupyter的Notebook其实可以支持不同的语言内核, GopherNotes项目为Jupyter提供了Go语言的内核。

该项目受到已经不在维护的Gore (基于igo内核) 的启发 。

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

后台给出的错误是:

1Error running goimports: 2/tmp/979860191/func_proxy.go:4:4: expected declaration, found 'for' 3[I 08:18:56.621 NotebookApp] Saving file at /Untitled.ipynb

我没有搞明白为什么,报了个bug,如果有搞明白的小伙伴请告诉我。

至此,虽然没有找到一个好用的,但是我对Gophernotes抱以很大的希望,希望它能够早日解决一些基本的问题。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Opencv中Mat矩阵相乘——点乘、dot、mul运算详解

Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593

P2P技术揭秘.P2P网络技术原理与典型系统开发

Modular.Java(2009.06)\.Craig.Walls.文字版.pdf:http://www.t00y.com/file/59501950(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.t00y.com%2Ffile%2F59501950)\More.E

Go语言的类IPython 交互式编程界面 - HelloWorld