Go语言的类IPython 交互式编程界面

Go语言的类似IPython的交互式编程界面 在本篇文章中,我将介绍一种类似IPython的交互式编程界面,可以提供更灵活的交互式开发体验。为了解决这个问题,我们可以使用一个叫做"GopherJS"的工具,它可以将Go代码编译成JavaScript。通过上述步骤,我们可以创建一个类似IPython的交互式编程界面,用于在浏览器中运行Go代码并实时查看结果。最后,我们可以在命令行中使用GopherJS将Go代码编译成JavaScript,并启动一个本地服务器来运行交互式界面。现在,我们可以在Go语言中编写一些代码,并在交互式界面中运行它。 阅读详情

Bret Victor 的 Inventing on principle 是我看到过的最令人激动和震撼的演示,没有之一。虽然这位前苹果公司的UI大牛早在2012年就作出的这次演示,但他的影响一直没有减弱,编写程序过程中的任何变化,应该直接的产生反馈,让程序猿能够看到结果,或者说创造者需要对自己的创造的东西有实时的反馈。

之前一直在使用Python,非常喜欢IPythonn Notebook,使用IPython Notenook来快速的完成一些原型非常的方便。现在由于项目的需要,要开始使用Go语言,我就在想,有没有可以使用Go的IPython环境呢?知乎上还有一个相关的帖子,可惜上面并没有给出有效的回答。

我做了些小功课,结果并不完美,这里分享给大家。

官方版 Go Playground 

开始学习Go语言最好的资源就是官方的Tour了,大家可以一边学习,一边运行Go的示例程序,直接获得运行结果。完美体现Inventing on principle的理念。

这个Tour内嵌了一个Go的Playgound,大家可以在github上找到该项目的代码。

该项目包含一个前端和一个容器化的后台Sandbox,以保证程序运行的安全性。

然而go playground还有一些限制:

  • 不能import 用户定义的包
  • 编辑器弱,没有语法高亮,没有提示,没有undo ...
  • 没有Ipython那种分段式的交互

XIAM版Go Playground

XIAM的go playground在官方的playground的基础上做了重大的改进。包括:

  • 支持用户自定义的包
  • 支持unsafe sandbox,用户可以访问网络,文件系统等
  • 前端的容器化

想要使用自定义的包,需要修改相应sandbox的Dockerfile

FROM xiam/go-playground/unsafebox

RUN go get github.com/myuser/mypackage
RUN go get github.com/otheruser/otherpackage

ENTRYPOINT ["/go/bin/sandbox"]

然后重新构建容器的Image就好了。

虽然我们解决了自定义包的问题,但是,这个编辑器还是太弱了,而且也缺乏IPython的分段式交互。有没有更好的呢?

GopherNotes

Jupyter的Notebook其实可以支持不同的语言内核, GopherNotes项目为Jupyter提供了Go语言的内核。

该项目受到已经不在维护的Gore (基于igo内核) 的启发 。

以上是我使用Gophernotes的一次测试,当我运行一个循环的时候,如果写成一行,In[7],一切OK。到但是当我写成三行后,In[8],就无法输出正确的结果了。

后台给出的错误是:

Error running goimports:
/tmp/979860191/func_proxy.go:4:4: expected declaration, found 'for'
[I 08:18:56.621 NotebookApp] Saving file at /Untitled.ipynb

我没有搞明白为什么,报了个bug,如果有搞明白的小伙伴请告诉我。

至此,虽然没有找到一个好用的,但是我对Gophernotes抱以很大的希望,希望它能够早日解决一些基本的问题。


今天我学会了:在Golang中制作一个简单的交互式Shell应用程序 在本文中,我将向大家展示如何使用Go语言创建一个简单的交互式Shell应用程序。我们将使用Go语言的os/exec包来执行命令,并利用bufio包来读取用户输入。接下来,我们定义一个函数来处理用户输入的命令,并执行相应的操作。我们将使用一个无限循环来不断读取用户输入,并调用。现在,我们已经完成了一个简单的交互式Shell应用程序。读取用户输入的命令。注意,我们需要去除命令字符串末尾的换行符。命令,我们就退出循环,结束程序的运行。函数来处理用户输入的命令。函数来处理用户输入的命令。时,我们将退出应用程序。 阅读详情

相关推荐

The-Go-Workshop:一种新的交互式Go语言学习方法

围棋工作坊 这是发布的的存储库。 它包含从头到尾完成该课程所必需的所有支持项目文件。 要求和设置 要开始使用项目文件,您需要: 安装 安装 安装 关于围棋工作坊 使您从成为Go的新手成为一名自信的开发人员,他可以利用该语言的关键功能来构建实际的应用程序。 该研讨会可帮助您突破过多的理论知识,并深入研究通常用于设计高性能,可扩展应用程序的实用功能和技术。 您将学到什么 了解Go语法并将其用于处理数据和编写函数 调试您的Go代码以解决开发问题 安全地处理错误并从恐慌中恢复 使用接口实现多态 处理文件并连接到外部数据库 创建一个HTTP客户端和服务器并使用RESTful Web API 使用并发设计可以执行多任务的软件 使用Go Tools简化开发并改善代码 相关工作坊和书籍 如果您发现此存储库很有用,则可能需要查看我们的其他一些研讨会标题: JavaScript工作坊 React

【Go 基础篇】Go语言获取用户终端输入:实现交互式程序的关键一步

在许多编程场景中,我们需要编写交互式程序,以便用户可以在终端中输入数据并与程序进行交互。Go语言提供了丰富的方式来获取用户终端输入,使得编写交互式程序变得简单而有趣。本篇博客将深入探讨Go语言中获取用户终端输入的各种方法,包括使用标准库中的fmt包、bufio包以及第三方库,帮助读者更好地理解如何实现交互式程序,提升用户体验。获取用户终端输入是编写交互式程序的关键一步,可以提升程序的用户体验和互动性。Go语言提供了多种方式来实现这一目标,包括使用fmt包、bufio包以及第三方库survey。

繁依Fanyi的博客 1732

Go-Gosetup是一个简单的交互式命令行工具用于搭建一个Go工作空间

Gosetup是一个简单的交互式命令行工具用于搭建一个Go工作空间

Go 交互式CLI - survey

在构建命令行工具时,良好的用户交互体验至关重要。尤其是在需要与用户进行复杂输入的场景下,传统的命令行参数和标志可能显得笨拙。是一个为 Go 语言设计的库,专门用于构建交互式的命令行界面。它提供了多种用户输入方式,让你的 CLI 工具变得更加易用和友好。

Lamb的博客 829

使用Go编写的基于终端的UI的丰富交互式小部件-Golang开发

用于终端UI的丰富交互式小部件此Go包为基于终端的用户界面提供了常用的组件。 这些组件包括:输入表单(包括输入/​​密码字段,下拉选择框)用于终端UI的Rich Interactive Widget该Go包为基于终端的用户界面提供了常用的组件。这些组件包括:输入表单(包括输入/​​密码字段) (,下拉选项,复选框和按钮),可导航的多色文本视图,复杂的可导航表格视图,灵活的树视图,可选列表,网格,Flexbox和页面布局,模态消息窗口,应用程序包装器,它们带有许多自定义选项,并且可以轻松地实现。

【HDLBits实战】从真值表到最优电路:SOP与POS形式在ECE241考题中的精妙应用

本文以HDLBits平台上的ECE241考题为例,详细讲解了如何从真值表出发,利用卡诺图化简技术,推导出最优的积之和(SOP)与和之积(POS)逻辑表达式。文章重点剖析了如何处理“无关项”以简化电路,并通过Verilog代码实现对比,阐述了SOP与POS形式在数字电路设计中的精妙应用与实战价值。

z2a3b4c5d的博客 217

golang与python交互_Go语言的类IPython 交互式编程界面

Bret Victor 的 Inventing on principle 是我看到过的最令人激动和震撼的演示,没有之一。虽然这位前苹果公司的UI大牛早在2012年就作出的这次演示,但他的影响一直没有减弱,编写程序过程中的任何变化,应该直接的产生反馈,让程序猿能够看到结果,或者说创造者需要对自己的创造的东西有实时的反馈。之前一直在使用Python,非常喜欢IPythonn Notebook,使用IP...

weixin_39875167的博客 384

FastAdmin框架Token验证实战:从登录到API调用的完整流程

本文详细解析了在FastAdmin框架中实现Token验证的完整流程,从数据表设计、登录接口签发Token,到核心验证中间件的编写与路由配置,并探讨了在业务API中的调用与安全实践。内容涵盖Token生成策略、有效期管理及安全增强措施,为开发者提供了一套可落地的API身份验证解决方案。

nnn11的博客 918

golang与python交互_使用jupyter搭建golang的交互式界面:类似于ipython

Jupyter NotebookThe Jupyter notebook is a web-based notebook environment for interactive computing.安装jupyter:pip3.7 install jupyter启动:jupyter notebook --port 参考:https://github.com/jupyter/notebookgoph...

weixin_28983061的博客 482

Apache Hop集成Spring Boot实战:从配置到执行HPL文件

本文详细介绍了将Apache Hop集成到Spring Boot应用中的完整实战方案。通过配置核心依赖、初始化Hop环境、编写服务层逻辑,实现了在Java应用中程序化执行HPL管道文件,从而将可视化ETL能力无缝嵌入微服务架构,提升数据处理的自动化与可维护性。

blue42的博客 477

2024年捡垃圾指南:E5 V3/V4服务器CPU怎么选?从游戏多开到深度学习,附华南X99主板搭配清单

本文详细解析2024年E5 V3/V4服务器CPU的选购策略,涵盖游戏多开、深度学习等多种应用场景。通过对比E5 V3与V4系列的制程、功耗及性能差异,提供高性价比的CPU型号推荐及华南X99主板搭配方案,帮助用户在有限预算下打造高效能工作站。

weixin_42549451的博客 1593

使用jupyter搭建golang的交互式界面:类似于ipython;jupyter还可以使用spark或者结合机器学习...

Jupyter Notebook The Jupyter notebook is a web-based notebook environment for interactive computing. 安装jupyter: pip3.7 install jupyter 启动: jupyter notebook --port <port_number> 参考: ...

weixin_30898109的博客 957

IPython的使用技巧整理

IPython 允许用户通过配置文件来自定义启动时的各种设置。通过编辑文件,可以设置启动时的默认参数、导入的模块、自动执行的代码等。

专注于全栈开发领域 934

【图像去噪】论文复现:灵感源自MAE!进一步解决BSN的局限性,破坏真实噪声的空间相关性!AMSNet的Pytorch源码复现,跑通源码,原理详解!

论文题目:Asymmetric Mask Scheme for Self-Supervised Real Image Denoising —— 自监督真实图像去噪的非对称掩码方案【图像去噪】论文精读:Asymmetric Mask Scheme for Self-Supervised Real Image Denoising(AMSNet)AMSNet是基于PyTorch Lightning CLI深度学习框架编写的,比较适合复杂的大型任务,复用很方便,但是安装和环境配置问题太多。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 549

【ComfyUI】QwenImageEdit OOTD角色与姿态匹配换装

本文介绍了一个基于Qwen Edit OOTD 2.0的ComfyUI工作流,能够实现角色与姿态匹配的智能穿搭生成。该工作流通过整合模型推理、姿态识别、图像拼接和渲染等节点,完成从角色图、姿态图到成品穿搭图的完整生成流程。核心采用Qwen Image系列模型进行图像理解和编辑,配合ControlNet进行姿态引导。用户只需提供角色图和姿态参考图,系统即可自动完成姿态解析、语义编码、采样生成等步骤,输出与输入姿态一致的穿搭图像。该方案适用于虚拟角色展示、电商试穿等场景,能保持角色特征一致的同时灵活变换姿态,显

Mr数据杨 1595

猫头虎分享:IPython的使用技巧整理

在数据科学和机器学习的领域,IPython作为一个强大的交互式计算环境,广泛应用于数据分析和建模中。本文将全面介绍IPython的使用技巧,包括快捷键魔术命令和扩展功能,让你在工作中更加高效。功能描述示例快捷键提高编辑效率的快捷键Ctrl + A魔术命令特定操作的简化命令扩展功能插件和配置文件的使用IPython为我们的数据分析和科学计算提供了强大的支持。未来,我们可以探索更多IPython的高级功能和扩展应用。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 1万+

家庭弱电最实用的功能,网线面板如何接线

按照规范,我国宽带入户线按B接法,即568B标准,从后面看,从左到右:1橙白,2橙,3绿白,4蓝,5蓝白,6绿,7棕白,8棕,即和水晶头的接法一致。做水晶头的时候,要注意排好线序,把8根线的头剪齐,留下大约1.8公分,插入水晶头的时候,水晶头要尾巴向下,把线插到水晶头的底端,用网线钳子夹紧。具体是:第1脚——橙白、第2脚——橙色、第3脚——绿白、第4脚——蓝色、第5脚——蓝白、第6脚——绿色、第7脚——棕白、第8脚——棕色,除了四根带颜色的线橙、绿、蓝、棕外,每一根白线上都有线标橙、绿、蓝、棕。

qq_43416206的博客 1677

golang python 交互_使用jupyter搭建golang的交互式界面:类似于ipython;jupyter还可以使用spark或者结合机器学习...

Jupyter NotebookThe Jupyter notebook is a web-based notebook environment for interactive computing.安装jupyter:pip3.7 install jupyter启动:jupyter notebook --port 参考:https://github.com/jupyter/notebookgoph...

weixin_39776991的博客 415

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IPython-Dashboard安装与配置完全手册:Windows/Linux/macOS全平台指南

IPython-Dashboard是一款独立轻量级的Web服务器,专为数据科学和数据分析人员打造,用于构建和共享IPython中创建的图表,支持交互式可视化、协作仪表板和实时流图功能。本指南将帮助你在Windows、Linux和macOS系统上轻松完成IPython-Dashboard的安装与配置。 ## 📋 系统要求与环境准备 在开始安装IPython-Dashboard之前,请确保你的系

gitblog_00086的博客 779

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IPython 的编程技巧(Python 开发必备神器),聊聊Python开发的现状和思考

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

2301_79098886的博客 757

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

启动ipython_在IPython启动时自动加载模块

I'm trying to to auto load the division module from __future__ on startup,i've currently got a simple script in the IPython startup libray with the line:from __future__ import divisionwhich works fine...

weixin_39687359的博客 229

Matplotlib如何实现交互式数据可视化?

数据可视化是数据分析与展现的重要环节,而Matplotlib是Python中最常用的数据可视化库之一。然而,传统的Matplotlib绘图通常是静态的,无法提供交互式的数据探索体验。近年来,随着Web技术的快速发展,交互式数据可视化变得越来越流行,因为它可以让用户更加直观地理解数据,通过交互来发现数据中的模式和关联。本文将深入探讨如何使用Matplotlib以及一些辅助库来实现交互式数据可视化,从而让你的数据可视化作品更加生动和有趣。

VivianJackson的博客 1672

ipython 源码阅读

ipython是一个非常棒的工具, 即改进了python的命令行工具的代码输入不友好, 又给jupyter做了很好的铺垫。 感觉jupyter的notebook用起对代码执行和展示都比较好,但是对代码的可阅读性大大降低。 所以我想做一个插件,又有jupyter的执行方便,又保留python代码的可阅读性。 ipython项目是一个很好的借鉴,于是来看了下ipython的源码,我在github上面的...

True Truth 832

YHZ006 MacOS 下安装 IDLE 、IPython 及 PyCharm 等开发工具

PyCharm 是 JetBrains 公司(www.jetbrains.com)研发,用于开发 Python 的 IDE 开发工具。JetBrains 公司开发的多款开发工具,其中很多工具都好评如潮,这些工具可以编写 Python、C/C++、C#、DSL、Go、Groovy、Java、JavaScript、Objective-C、PHP 等编程语言。

专注编程和人工智能! 716
上一篇: 持续交付的架构成熟度模型
下一篇: 一道据说是苹果的面试题
刚是程序员
博客等级 码龄9年 47粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值