是否有Golang终端外壳?编译语言有可能吗?

时间:2017-06-01 11:14:23

标签: python shell go

最近我对Golang很感兴趣。

当我学习Python的时候,我开始使用终端shell,只是练习了不同的数据,文件,做了许多琐碎的愚蠢操作,这是一种与新语言交互的好方法,它对编写新程序非常有帮助。

我想 - 我猜是因为Golang是一种像Java这样的编译语言,所以不可能拥有这样的终端shell。是对的吗?如果是这样 - 为什么它不起作用的真正技术原因是什么?

3 个答案:

答案 0 :(得分:1)

评论的声誉不够,所以我把它放在这里。

当我第一次开始使用golang多年来使用python时,我感觉一样。我已经决定,除了琐碎的编码之外的任何事情(可以在go playground上完成),我最终还是会编写一个脚本,而且在锅炉板中添加它真的不是很难。 / p>

我认为关键是Go编译得足够快,我认为大多数人都没有真正注意到只需重新编译和运行整个程序来查看其更改的问题。

你是对的,Go是编译的。这与使用虚拟机生成代码然后执行的Java或Python的根本不同。您无法分别在没有JVM或python解释器的情况下运行Java程序或Python程序。另一方面,编译后的go程序可以直接分发,没有依赖性,这是许多人喜欢它进行部署的一个原因。

答案 1 :(得分:1)

看看gomacro

go get -u github.com/cosmos72/gomacro

~ $ gomacro
// GOMACRO, an interactive Go interpreter with generics and macros
// Copyright (C) 2018-2019 Massimiliano Ghilardi <https://github.com/cosmos72/gomacro>
// License MPL v2.0+: Mozilla Public License version 2.0 or later <http://mozilla.org/MPL/2.0/>
// This is free software with ABSOLUTELY NO WARRANTY.
//
// Type :help for help
gomacro> import "fmt"
gomacro> a := 10
gomacro> fmt.Println(a)
10
3   // int
<nil>   // error
gomacro>

答案 2 :(得分:0)

这不是直接的解决方案,但是可以尝试的事情是Jupyter笔记本,它带有https://github.com/gopherdata/gophernotes这样的Go内核

虽然您将使用Jupyter浏览器界面而不是终端,但是您仍然可以执行类似终端的操作,例如执行shell命令和制表符完成。当我想导入一个我不熟悉的库并快速尝试其功能for example时,我发现这很有用。