用 Python 写了一个 Golang 的 REPL 代替 Playground

2015-09-13 16:18:35 +08:00
 wangleineo
因为众所周知的原因, Go 官方的 Playground 比较慢;另外,用 Playground 来试验一点代码,也需要写 main 函数把语句包起来,感觉有点麻烦。就写了一个 Go 的 REPL ,跟 Python 的命令行比较像,用于尝试一些代码或者试用一些接口的时候感觉方便一些:

Enter your Go statements Or command (start with !):
>>> import "fmt"
>>> import "strconv"
>>> fmt.Println ("Hello, REPL")
Hello, REPL
>>> i := 42
>>> fmt.Println ("The meaning of life:", strconv.Itoa (i ))
The meaning of life: 42
>>> a := make ([]int, 3 )
>>> for j:=1;j<=3;j++{
... a=append (a, j*j )
... }
...
>>> fmt.Println (a )
[0 0 0 1 4 9]

代码在这里:
[https://github.com/RealHacker/python-gems/blob/master/go_repl.py]( https://github.com/RealHacker/python-gems/blob/master/go_repl.py )

- 用的是 go 命令编译运行,所以 go 必须在 Path 里。
- 虽然叫 REPL ,但是并不支持表达式的求值,输入的必须是完整的 Go 语句。虽然其实也可以支持,但用 Python 做 Go 表达式的判定感觉太麻烦。
- 定义了变量,如果没使用,编译器会报错,这种情况还没有处理;如果 import 一个包,没有使用是没问题的。
- 可以用!src 随时查看当前生成的代码,也支持删除之前输入的语句。
- 没做过什么测试,一定有很多问题。

欢迎大家踊跃拍砖。
2553 次点击
所在节点    分享创造
2 条回复
pynix
2015-09-13 17:52:31 +08:00
貌似不错的演绎。。。
pynix
2015-09-13 17:52:40 +08:00
样子。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/220383

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX