文章目录

  • 简介
  • 用法
    • 交互式运行环境REPL
    • 直接运行Go语言代码文件
    • 使用Goxt内置的代码编辑器
    • 直接运行Gotx云端Gitee库中的例子代码
    • 查看Gotx云端Gitee库中的例子代码
    • 直接远程执行Gotx代码
    • 加密源代码文件Encrypt source code file
    • 解密代码文件
    • 直接解密执行加密后的代码文件
    • 使用Gotx进行图形界面编程
    • 使用Gotx的命令行版本Gotxc
  • 文献

简介

Gotx是一个Go语言(Golang)的解释器和运行环境,只有单个可执行文件,绿色、跨平台,无需安装任何Go语言环境就可以直接运行Go语言代码,支持绝大多数Go语言标准库,以及一些有用的第三方包/库,可以进行图形界面(GUI)编程,自带代码编辑器和REPL命令行交互式运行环境,支持代码脚本加密,堪称Go语言开发者的神器。Gotx适合的使用场景主要是:

  • 调试一些Go语言代码,尤其是在服务器上不方便经常编译的时候;最后当真正发布时,再安装Go语言环境进行编译以便获得较高的性能;
  • 作为一门独立的解释执行的脚本语言,而又完全支持Go语言的语法和函数库,这也是非常激动人心的;

Gotx基于yaegi这个非常优秀的Go语言解释器,在此基础上提供了更为丰富的运行环境支持和内置的第三方包。Gotx同时也提供一个纯命令行版本Gotxc。

Gotx的安装非常简单,只需要到其下载页面下载对应操作系统的压缩包,解压后仅一个可执行文件,放入合适的文件夹(目录)中即可,最好放到系统的PATH环境变量中,这样可以更方便地执行。

下面举例说明Gotx的特性用法。

用法

交互式运行环境REPL

直接运行gotx程序不带任何参数即进入交互式运行环境REPL,可以尝试像脚本一样运行Go语言的代码,对Go语言编译运行惯了的开发者来说,应该是非常高兴的。

C:\Users\Administrator>gotx
> import "math/rand"
0xc0001926a0
> println(rand.Int())
9119787617706712871
> printf("1.6 * 3.8 = %v\n", 1.6 * 3.8)
1:28: undefined: printf
> import("tk")
0xc000192d00
> tk.Pl("1.6 * 3.8 = %v", 1.6 * 3.8)
1.6 * 3.8 = 6.08
<nil>
> import "fmt"
0xc000193160
> fmt.Printf("1.6 * 3.8 = %v\n", 1.6 * 3.8)
1.6 * 3.8 = 6.08
17
>

可以看出,我们可以随时导入Go语言的标准包或第三方包,并使用Go语言完全相同的语法来进行类似Python这种解释执行的脚本语言式的即时编程与调试。虽然解释执行相对速度较慢,但在非特别需要大量高速计算的情况下已经足够,并且无需像Go语言那样每次修改哪怕一行代码也要重新编译执行,真正需要高效率的时候,可以在代码调试基本没问题后再拿到Go语言环境中编译即可。

使用quit()函数或exit(1)函数来退出Goxt的REPL环境,直接Ctrl-C也可以。

直接运行Go语言代码文件

Gotx也可以直接运行Go语言的代码文件,这也是Gotx最常使用的方式,大多数情况下,会被直接拿来执行一个“.go”为后缀的Go语言的文件,也可以执行以“.gt”结尾的Gotx自身的代码文件,这两种文件有可能稍有不同,因为Gotx内置了一些函数,例如printfln等,也有一些微小的差异,
例如简化了一些常用第三方库的导入包明,但不使用这些特性的话,大多数情况下这两种代码文件是一样的。

C:\Users\Administrator>type d:\goprjs\src\github.com\topxeq\gotx\scripts\basic.gt
package mainimport ("math/rand""tk"
)func main() {tk.Pl("1.2 * 3.8 = %v", 1.2*3.8)printfln("random number: %v", rand.Int())
}C:\Users\Administrator>gotx d:\goprjs\src\github.com\topxeq\gotx\scripts\basic.gt
1.2 * 3.8 = 4.56
random number: 2622618270577455181C:\Users\Administrator>

本例中执行了一个basic.gt代码文件,可以看出,这段代码与Go语言代码基本完全一致,仅有两处微小区别,一是对于第三份包github.com/topxeq/tk使用了短路径tk来进行导入,另外使用了内置函数printfln(相当于printf函数多输出了一个回车换行符),如果为了完全与Go语言兼容,可以按适当的方法写即可,例如包导入可以写作 “github.com/topxeq/tk”,printfln这一句可以写作printf(“random number: %v\n”, rand.Int())即可,就是稍稍麻烦一些而已。

使用Goxt内置的代码编辑器

直接输入

gotx -edit

即可启动一个Gotx内置的代码编辑器进行代码编写,也可以后带文件名编辑一个已有的代码文件,例如,

gotx -edit basic.gt

效果如下所示:

直接运行Gotx云端Gitee库中的例子代码

gotx -example basic.gt

直接运行Gotx云端Gitee库中的例子代码.

查看Gotx云端Gitee库中的例子代码

gotx -example -view basic

可以省略最后的文件扩展名。另外,-view参数也可以用于查看其他方式读入的代码,例如从文件中的。

C:\Users\Administrator>gotx -example -view basic
package mainimport ("math/rand""tk"
)func main() {tk.Pl("1.2 * 3.8 = %v", 1.2*3.8)printfln("random number: %v", rand.Int())
}

也可以用这种方法加重定向将代码保存,例如,

gotx -example -view basic > d:\scripts\a.gt

直接远程执行Gotx代码

gox -remote https://yourdomain.com/basica.gt

Gotx将从指定的网址下载该代码并执行,这种方式比较方便远程调试。

加密源代码文件Encrypt source code file

gotx -encrypt=mycode basic.gt

加密的文件将在扩展名中加上一个字母e。注意将mycode换为自己所需的加密密码,并不要忘记,否则无法取回。

解密代码文件

gotx -decrypt=mycode basic.gte

直接解密执行加密后的代码文件

gotx -decrun=mycode basic.gte

或远程网络的也可以

gotx -decrun=mycode -example basic.gte

使用Gotx进行图形界面编程

Gotx中内置了第三方包Giu,可以编写一般的图形界面程序,需要系统支持OpenGL。

package mainimport ("os""github.com/AllenDang/giu"
)var text1 stringfunc onButton1Click() {// evaluate the expression in the text inputt := text1rs := eval(t)println(rs)// set the result back into the text inputtext1 = rs //string(rs)
}// close the window, also terminate the application
func onButton2Click() {os.Exit(1)
}// main window loop
func loop() {// set the layout of GUIlayoutT := []giu.Widget{giu.Label("Enter an expression."),giu.InputText("", 0, &text1),// widgets in line layout is aligned left to rightgiu.Line(giu.Button("Calculate", onButton1Click),giu.Button("Close", onButton2Click)),}giu.SingleWindow("Calculator", layoutT)
}func main() {// text1 used to hold the string value of the text input// notice: text1 is a pointer// setup the title, size (width and height, 400*200), style and font-loading function of main window,mainWindow := giu.NewMasterWindow("Calculator", 400, 200, giu.MasterWindowFlagsNotResizable, nil)// show the window and start the message loopgiu.LoopWindow(mainWindow, loop)
}

执行效果:

进行计算

十几行程序就实现了一个图形界面的计算器。

使用Gotx的命令行版本Gotxc

有些电脑环境不支持图形界面,例如租用的云端服务器,此时可以使用Gotx的命令行版本Gotxc,除了与图形界面有关的功能,其他功能都可以使用,也是非常方便的。

文献

https://mp.weixin.qq.com/s/6ZpNHrkNUa1z3y_ASt1h_g

Go 语言开发者的神器—Gotx相关推荐

  1. Go语言开发者福利 - 国内版 The Go Playground

    本文为原创文章,转载注明出处,欢迎扫码关注公众号flysnow_org或者网站http://www.flysnow.org/,第一时间看后续精彩文章.觉得好的话,顺手分享到朋友圈吧,感谢支持. 作为G ...

  2. c语言作业的搜题软件下载,C语言搜题神器下载-C语言搜题神器秒出答案下载 安卓版 v2.1.7- 游娱下载站...

    Tags: 学习 教育 C语言搜题神器是一款手机端在线学习平台,可以帮助用户提供海量技术题库外,还涵盖了求职面试经验和技术干货为你提供,让你C语言随时学习无忧.同时除去以上学习内容外,还可支持刷题和编 ...

  3. python dash教程_开发者必备神器Dash使用教程

    Dash是什么,为什么说对于开发者是必备工具?今天就让我们一起来认识一下这款程序员必备神器Dash.作为一名死coder,每天最常见的动作就是查看各种API文档,你一定有过同时打开N个窗口(HTML. ...

  4. 2020年 HackerEarth 调查:Go 语言成为最受欢迎的语言 开发者最关心职业发展路径...

    近日 HackerEarth 发布了 2020 年开发者调查报告,有来自 76 个国家和地区的 16,000 多位开发者参与其中. HackerEarth 联合创始人兼首席执行官 Sachin Gup ...

  5. 调查了 10,975 位 Go 语言开发者,我们有了这些发现!

    整理 | 弯月,责编 | 郭芮 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 近日,Go语言官方网站针对数千名开发人员进行了问卷调查,基于Go语言的相关使用情况进行 ...

  6. tablueau地图标记圆形_R语言在线地图神器:Leaflet for R包(三) 符号标记

    如果还是直接写,会出现错误提示,说找不到经纬度的列 像这种情况,就需要进行显式申明了:(顺便换个背景底图) leaflet(dh)%>%addProviderTiles("Esri.W ...

  7. R语言在线地图神器:Leaflet for R包(三) 符号标记

    四.标记 点标记在地图符号化的时候,是最常用的功能之一,一般来说,带有经纬度坐标的点信息,在地图上标志的位置,都会通过一个标记物来实现,很多时候把这个东东称之为"图钉"是非常形象的 ...

  8. 小程序插件——开发者开发神器

    2019年3月13日,微信小程序发布了插件功能.开发人员可以为其他小程序开发插件,就像开发小程序一样.同时,小程序制作开发人员可以直接使用插件在小程序中为用户服务而不重复开发. 今天就和大家分享6款非 ...

  9. 易语言之WebshellBrute神器打造

    1.课前要掌握的易语言姿势: 数组:循环 and 判断(故作神秘不放图) 2.思路整理 看了冰河表哥的文章:http://bbs.ichunqiu.com/thread-16952-1-1.html ...

最新文章

  1. Android重绘ListView高度
  2. 安装完Arch后,要安装的软件
  3. rabbitmq实战指南_RabbitMQ之脑裂
  4. 高低层特征融合【转载】
  5. 10kv开关柜价格_常用变压器、开关柜介绍、厂家联系方式、报价单分享
  6. Q95:纹理映射(Texture Mapping)——地球仪
  7. 编程需要数学知识吗_编程需要了解数学吗?
  8. matlab 最优资产组合,基于MATLAB的最优投资组合问题.pdf
  9. failed to create symbolic link ‘/usr/bin/mysql’: File exists
  10. Git报错Kex_exchange_identification
  11. 理解IaaS、SaaS、paas的含义及区别
  12. Photoshop从入门到发疯(一)身份证添加水印
  13. 43.自动获取汉子笔画
  14. pycharm 自动补全代码提示前符号f,m , p,c,v是什么意思?
  15. Elasticsearch:ingest pipeline 使用示例 - 解析常用日志格式
  16. 2022 年前端技术发展趋势知识小结
  17. NSPredicate模糊、精确、查询
  18. 蓝牙连接音箱抓空包、HCI、sitalog
  19. [新闻摘录]第一届山西省互联网大会(2015.07.03召开)概要
  20. 从0开始的Java基础,包你学会。

热门文章

  1. 基础会计学习笔记5 会计科目和会计账户
  2. umi+antd+dva项目搭建
  3. 需求分析——数据流图的绘制
  4. HSV标记肤色与实现艺术效果---OpenCV-Python开发指南(9)
  5. Modbus寄存器分类及地址分配
  6. MySQL数据库——四大约束(Constraint)
  7. 谈钱不丢人,但请实事求是
  8. 安装pytorch时InvalidArchiveError
  9. linux内核c语言笔试,C语言之linux内核--BCD码转二进制与二进制转BCD码(笔试经典)...
  10. 时域卷积定理的证明 | 卷积的傅里叶变化等于傅里叶变换的乘积