【问题标题】:Can GO be used as a scripting engine within an application?GO 可以用作应用程序中的脚本引擎吗?
【发布时间】:2012-06-06 18:34:50
【问题描述】:

GO 可以在应用程序中用作脚本语言吗?我找不到有关此的任何信息:是否有动态链接库版本可以从 Windows 应用程序与一些标准方法(例如 Compile()Execute 进行接口)以及回调变量共享等功能?

【问题讨论】:

标签: windows scripting go


【解决方案1】:

理论上(也许在我不知道的某个地方),Go 可以用作脚本语言。请注意,它与使用 e.g. 一样有意义。 C 作为脚本语言。

【讨论】:

  • 好的,但是 Google 不提供一种嵌入到 dll 或其他东西中的虚拟机?
  • 不,它没有。这是一种编译语言。
  • 但我想说它可能比使用 C 更可行,因为 GO 提供了更多 API(如反射)来访问暴露的内部结构、函数等。我相信有些人正在做它已经(而且我确定我不想使用它)。
  • 其实编译不排除集成到应用程序中,毕竟不是dll在运行时映射到进程内存?
【解决方案2】:

一开始这可能听起来很奇怪,但请同意我的观点:我认为它是脚本语言的完美候选者,因为它的编译时间非常快......听我说......

大多数脚本语言都是解释性的,因此它们不需要(甚至在某些情况下提供)编译。然而,编译语言通常更安全,因为它们可以在编译时捕获某些错误,这比在运行时捕获语法错误等情况要好。

使用 Go,编译时间如此之快,以至于任何运行 Go 代码的程序(例如 Web 服务器)都可以假设在代码发生更改时按需编译代码,否则使用编译后的版本。

实际上,如果您查看 Google App Engine 并下载他们的 Go 开发网络服务器 (https://developers.google.com/appengine/),您会注意到他们的网络服务器正是这样做的。如果您浏览他们的 Hello World Go 教程,您会注意到,如果您对代码进行更改,则无需重新编译 Go 代码即可使更改生效。

【讨论】:

  • 看起来很奇怪,因为我一开始应该问“Go 是否可以用作 LUA”。
  • 我不认为有任何可用的工具可以像 Lua 一样使用它,因为它是一种新语言。但它似乎发展得非常快,所以我猜这些工具很快就会上市。现在,您也许可以借助一些 C 库来进行一些操作。不过我认为目前还没有任何东西存在。
【解决方案3】:

Go 不是脚本语言。因为 Go 是为快速编译而设计的,所以有一些尝试将其用作脚本语言。例如,

【讨论】:

  • 不一样。这些是一种简单地运行 go 程序的方法,就好像它是一个脚本一样。 OP 想知道如何在更大的应用程序中使用 Go 作为脚本引擎,例如Lua 的常用方法。
【解决方案4】:

没有。 Go 代码不能在非 Go 应用程序中使用,除非 Go 负责启动整个应用程序。

【讨论】:

猜你喜欢
  • 2022-06-11
  • 2010-10-01
  • 2011-08-31
  • 2011-02-27
  • 1970-01-01
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多