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和页面布局,模态消息窗口,应用程序包装器,它们带有许多自定义选项,并且可以轻松地实现。

浙政钉H5应用上架实战:从环境配置到发布避坑指南

本文详细解析浙政钉H5应用上架全流程,从环境配置到发布避坑指南。重点介绍Vue 2.6 + Node 14.21.3的稳定开发环境搭建、项目结构规范及常见报错解决方案,帮助开发者高效完成浙政钉H5应用上架流程。

weixin_27943395的博客 287

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

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

weixin_39875167的博客 384

本地化部署dify,使用Database插件实现dify直连数据库报错No module named ‘MySQLdb‘解决方案

网上查阅各种资料,有说修改/dify-main/docker/volumes/sandbox/dependencies目录下的python-requirements.txt文件,添加了如下两行,试验后无效。,看到有人是其他报错,但是URI配置如下(在mysql后面加了pymysql),尝试后果真成功了。按照系统提示设置完数据库URI后保存出现错误。在工具市场查询Database,点击后进行授权。最后在该插件的项目地址获得灵感。

qiaoxu1989的博客 4334

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

什么是无人机电源管理模块?电源管理模块有什么用处?

我来描述一下我的问题情景,电源管理模块的定义是,这里给出这个PX4官方对于电源管理模块的一些介绍,补充一下锂电池的放电原理大家就可以更好理解为什么需要电源管理模块

HRWVY0725的博客 2275

本体论与AI人工智能:如何实现智能语义理解?

句法理解:解析符号序列的结构关系(已相对成熟)指称理解:建立符号与现实世界实体的对应(部分实现)概念理解:把握符号背后的概念内涵与外延(有限进展)情境理解:在特定语境中推断符号的意图与意义(重大挑战)当前AI系统主要停留在第一层级,部分触及第二层级,而真正的智能语义理解需要突破后两个层级。本体论通过提供结构化的概念体系和关系模型,为实现深层语义理解提供了理论框架。

大模型应用工坊 1545

使用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

数字逻辑Fundamentals of Digital Logic with Verilog Design | 3rd Edition Solutins Chapter 3(step by step)

第三章3-1~3-27全部习题解析和代码模块

weixin_62651190的博客 1946

IPython的使用技巧整理

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

专注于全栈开发领域 934

YOLOv11改进 | 特殊场景检测篇 | 低照度图像增强网络SCINet改进黑暗目标检测(全网独家首发)

本文给大家带来的改进机制是低照度图像增强网络SCINet,SCINet(自校正照明网络)是一种专为低光照图像增强设计的框架。它通过级联照明学习过程和权重共享机制来处理图像,优化了照明部分以提升图像质量。我将该网络集成在YOLOv11的主干上针对于图像的输入进行增强,同时该网络的并不会增加参数和计算量,基本和普通的网络结构保持一致,同时该结构支持自定义调节层数,来控制图像增强的效果 ,非常适合想要在黑夜目标检测领域发表文章的读者,该基本网络不会影响模型的速度。欢迎大家订阅我的专栏一起学习YOLO!

Snu77的博客 2207

面向元数据的 SAP UI 中枢:namespace sap.ui.mdc 全景解析

如果把应用前端比作一条数据到交互的装配线,sap.ui.mdc 就是那条线的标准化工装:以 PropertyInfo 描述原料,以 Delegate 定义装配方法,以 p13n 与 VariantManagement 交付面向个体的最终产物;而 Condition Model、Operator 与 ValueHelp 则让输入与筛选的语义落地。与 OData V4 服务与 Fiori Elements 宏构件组合使用时,它能在保持一致体验的同时,给自由式开发者留下足够的可编排空间。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 240

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

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

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

汇川Easy系列PLC系统PID指令编程应用(增量型)

增量式PIDS7-1200/1500增量式PID(输出归一化、支持PWM输出)_西门子1200pid算法公式-优快云博客文章浏览阅读1k次。本文介绍了S7-1200/1500 PLC中增量式PID算法的应用,包括输出归一化和PWM输出。通过详细解析,阐述了PID输出如何限制在0.0-1.0之间,并且如何将PID输出与PWM占空比关联,适用于温度等控制场景。

RXXW_Dor的博客 1427

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

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...

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

gitblog_00086的博客 779

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

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

2301_79098886的博客 757

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

启动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、付费专栏及课程。

余额充值