go开发gui还是python开发gui_Go 语言这么强大,为什么没变成开发桌面软件主力语言呢?...

本文探讨了Go语言在开发跨平台GUI时遇到的困难,包括成熟GUI框架的局限性,CGO与Go差异带来的问题,Go缺乏动态库的现状,以及编写跨平台GUI库的复杂性。虽然Go可以实现GUI,但可能需要借助额外的运行时程序作为桥梁,这增加了用户的使用难度。
摘要由CSDN通过智能技术生成

我在搞Go桌面GUI这方面,简单解释下,Go搞桌面跨平台软件有几个问题:

一、跨平台GUI本身就不好做,

目前成熟可用的系统级跨平台GUI框架其实并不多,Native与系统原生组件关联的的其实只有Qt、Gtk、wxWidgets,其他要么是SDL、GLW之类的绘图引擎、要么是Electron这类基于浏览器的,要么是JavaFX、SWT、AWT、Swing这类基于Java的,当前其他还有很多零零碎碎的跨平台GUI框架,有些在某些方面还挺好用的,但基本都不全面。

比如我需要做一个全屏和窗口截屏软件,上述很多框架都做不了,更别说一些小框架了,那些只能靠你自己去桥接自己基于系统API写的各个平台的截屏组件了,别提多蛋疼了。

另起炉灶重新做一个完美可用的系统级GUI其实是非常困难的,做一个能用在某些领域的很简单,我一个月就能撸一个,但这并不是一个真正可用的GUI。目前Go这边真正在尝试这么干的其实只有类似fyne这样的框架,但fyne是基于OpenGL和GLFW实现的,先天受到OpenGL的一些限制,无法像基于系统GUI的一些框架那样完美兼容系统,比如上面的截屏就做不了,另外,MacOS最新的版本已经废弃OpenGL了,接下去会改用Metal,这个项目有得好蛋疼了,我不看好。

二、CGO和GO的差异

无论你怎么弄,跨平台GUI都必须要与操作系统交互,与系统API交互就意味着得引入CGO,而用了CGO就会一定程度上丧失跨平台性和安全性,甚至某种程度上你都不能再认为这是一个Go的GUI框架,而只是一个Go语言能用的C框架。

三、Go没有动态库

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值