Go每日一库之一个好玩的 Go 语言 REPL 工具
2022-7-29 08:54:51 Author: Go语言中文网(查看原文) 阅读量:10 收藏

简介

周末闲逛 GitHub 的时候发现一个很好玩的 Go 语言的 REPL(read-eval-print-loop)工具。本文和大家分享一下这个工具:gore

首先放一张 GitHub 的动图感受一下:

快速使用

gore 是一个命令行工具,需要配合 Go Module 安装。Go 环境安装完成之后,执行下面的命令安装 gore:

$ go install github.com/x-motemen/gore/cmd/[email protected]

go install 命令会将会在$GOPATH/bin目录生成的 gore 可执行文件。强烈推荐大家把$GOPATH/bin加入到系统的可执行文件搜索目录(即$PATH)中。

执行下面的命令即可进入 Go 的 REPL:

$ gore

命令

目前支持的命令还不多。我将命令分为两类,一种是基础命令,一种是代码相关命令。

注意,在 gore 中所有的命令必须以:开始。非:开始的行会被识别为代码。

基础命令

  • help:显示命令列表

  • doc:我觉得这个命令挺有意思,它可以显示一个包、结构体或接口的文档。如果要查看标准库的文档,例如math/bits,可以直接键入命令:doc bits

注意,要查看文档的包必须先使用:import命令导入。并且传给:doc命令的参数必须是包去掉路径的部分,例如我们不能使用:doc math/bits,必须使用:doc bits

doc 也可以用来查看第三方库的文档。也是先导入后查看:

  • quit:退出 REPL。

代码命令

  • import:导入包的命令。既可以导入标准库的包,也可以导入第三方库的包,gore 会自动调用 go get 去下载第三方库
  • type:输出表达式会变量的类型
  • print:我们在 gore 中输入的代码都会存放在一个临时文件中。print 命令会打印这个临时文件的内容。

  • clear:清空临时文件。执行 clear 命令之后 print 将会打印一个空的 main 函数。

  • write [<filename>]:将临时文件保存到指定的路径中。

特性

  • 行编辑:通过左右键在行内移动光标,退格键删除光标前的内容,重新输入内容
  • 命令历史:gore 会保存之前输入的命令历史,可以通过上下键找出之前执行的命令。
  • 多行输入:如果 gore 检测到输入还没有结束就换行了,它会等待输入结束再执行这条语句。例如 if 语句
  • 自动补全:使用 TAB 键可以自动补全命令,不能补全代码
  • 代码补全:这个我没试过,文档介绍说需要 gocode 配合
  • 自动导入:使用选项-autoimport启动可以自动导入要使用的包

缺点

体验下来,我觉得有几个缺点:

  • 启动速度较慢。键入 gore 命令按下回车要等好几秒。其他命令的执行速度也不快

  • doc 命令的限制有点奇怪。为什么包不能加路径?go doc 是可以加路径的。也有可能我使用的姿势不对,有知道的可以指点一二😀

  • 多行输入有点反直觉。如果我没有输入完整的代码,它会一直等着我输入。可是我已经不想输入了。有一次我键入 type 命令时忘记加:了,就变成这样了:

当然,可以通过Ctrl + C终止输入,这个让我摸索了好一会儿。我个人使用其他软件的经验是连续几个空行就可以终止了。这一点严格来说不算缺点,只是不符合我的习惯。

总结

总体来说 gore 是一个比较好玩的工具,期待项目发展壮大!

大家如果发现好玩、好用的 Go 语言库,欢迎到 Go 每日一库 GitHub 上提交 issue😄

参考

  1. gore GitHub:github.com/x-motemen/gore
  2. Go 每日一库 GitHub:https://github.com/darjun/go-daily-lib

推荐阅读

福利
我为大家整理了一份从入门到进阶的Go学习资料礼包,包含学习建议:入门看什么,进阶看什么。关注公众号 「polarisxu」,回复 ebook 获取;还可以回复「进群」,和数万 Gopher 交流学习。


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMTA4Njc0OQ==&mid=2651453224&idx=1&sn=367f6f30bf90121be4c49cda486f046e&chksm=80bb29dab7cca0cc8697fb9f4fd3b01abb4dbb19a988a3bb4fdf030691557b019f53127189a9#rd
如有侵权请联系:admin#unsafe.sh