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

sma*_*ish 5 python shell go

最近对 Golang 感兴趣。

当我学习 Python 时,我启动了一个终端 shell,只是练习向它扔不同的数据、文件,进行许多琐碎的愚蠢操作,这是与新语言交互的好方法,并且对编写新程序非常有帮助。

我想知道 - 我猜因为 Golang 是一种像 Java 这样的编译语言,所以不可能有这样的终端 shell。那正确吗?如果是这样 - 它无法工作的真正技术原因是什么?

Rob*_*jan 5

看看戈宏

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>
Run Code Online (Sandbox Code Playgroud)


ber*_*bus 1

当我使用 Python 多年后第一次开始使用 golang 时,我也有同样的感觉。从那以后,我决定,对于除了琐碎编码(可以在go Playground上完成)之外的任何事情,我最终都会编写一个脚本,并且添加样板内容实际上并不困难。

我认为关键是 Go 的编译速度足够快,以至于我认为大多数人并没有真正注意到仅重新编译并运行整个程序以查看其更改的问题。

不过你是对的,Go 是编译的。这与 Java 或 Python 根本不同,它们都使用虚拟机生成然后执行的代码。如果没有 JVM 或 Python 解释器,则无法分别运行 Java 程序或 Python 程序。另一方面,Go 程序一旦编译后就可以直接分发而无需依赖项,这也是许多人喜欢使用它进行部署的原因之一。