go 语言适合写桌面程序吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
erming
V2EX    Go 编程语言

go 语言适合写桌面程序吗?

  •  
  •   erming 2018-02-08 18:47:26 +08:00 8284 次点击
    这是一个创建于 2804 天前的主题,其中的信息可能已经有所发展或是发生改变。

    跨平台的有吗?推荐几个看看

    70 条回复    2020-05-20 13:39:08 +08:00
    duan602728596
        1
    duan602728596  
       2018-02-08 18:49:42 +08:00 via iPhone
    nwjs
    duan602728596
        2
    duan602728596  
       2018-02-08 18:50:07 +08:00 via iPhone
    go 的? go 的不清楚......
    WildCat
        3
    WildCat  
       2018-02-08 18:51:10 +08:00 via iPhone
    还不如 Java 吧
    zjsxwc
        4
    zjsxwc  
       2018-02-08 18:55:40 +08:00   1
    jlkm2010
        5
    jlkm2010  
       2018-02-08 19:02:42 +08:00
    looplj
        6
    looplj  
       2018-02-08 19:13:54 +08:00
    qt 的 go 绑定不错
    deali
        7
    deali  
       2018-02-08 19:18:12 +08:00
    写桌面?跨平台 Qt,Windows .Net ,什么语言好像关系不大吧。
    boboliu
        8
    boboliu  
       2018-02-08 20:20:52 +08:00
    可以用 qt binding,但是。。。感觉不甚好用,还是 pyqt 吧
    matsuz
        9
    matsuz  
       2018-02-08 20:29:10 +08:00 via iPhone
    不适合
    matsuz
        10
    matsuz  
       2018-02-08 20:30:18 +08:00 via iPhone
    写桌面不要追求跨平台

    如果因为某些原因非要跨平台那就 Qt
    sammo
        11
    sammo  
       2018-02-08 20:32:39 +08:00 via iPhone
    java swing
    wweir
        12
    wweir  
       2018-02-08 20:33:18 +08:00 via Android
    从语言也行而言,适合。但没啥好用的库,所以目前不适合
    freedomSky
        13
    freedomSky  
       2018-02-08 21:14:26 +08:00 via iPhone
    还不如 py
    SuperMild
        14
    SuperMild  
       2018-02-08 21:25:36 +08:00   1
    桌面跨平台,一个 Qt,一个 Electron,选择不多。
    KiriGiri
        15
    KiriGiri  
       2018-02-08 21:26:58 +08:00 via Android
    goqt,写点小工具还可以。
    Muninn
        16
    Muninn  
       2018-02-08 21:33:10 +08:00
    放弃吧
    peterpei
        17
    peterpei  
       2018-02-08 21:37:56 +08:00 via Android
    不适合吧。。。
    timothyye
        18
    timothyye  
       2018-02-08 21:41:52 +08:00 via Android
    electron +1
    searene
        19
    searene  
       2018-02-08 21:45:34 +08:00
    Qt 资料太少,我推荐 electron
    linnn2
        20
    linnn2  
       2018-02-08 21:56:47 +08:00 via Android
    写应用为啥不用 nodejs
    Devin
        21
    Devin  
       2018-02-08 22:49:04 +08:00 via iPhone
    每种语言都有适用场景,很明显 C#更适用
    AV1
        22
    AV1  
       2018-02-08 22:58:18 +08:00
    用 GopherJS 把 Go 编译成 JS,在 Electron 框架下开发。
    ivechan
        23
    ivechan  
       2018-02-08 23:03:22 +08:00
    @searene 我看 Qt 资料挺全的, 请问为什么说少呢? 是因为 Goqt 资料比较少吗?
    Immortal
        24
    Immortal  
       2018-02-08 23:34:33 +08:00
    不合适 之前也折腾调查过一段时间
    语言还是做自己擅长领域的事情比较好
    Qzier
        25
    Qzier  
       2018-02-08 23:58:01 +08:00 via iPad
    还是 pyqt 吧
    Qzier
        26
    Qzier  
       2018-02-08 23:59:17 +08:00 via iPad
    electron 在 windows 下不支持 subpixel 抗锯齿,字体都很模糊。
    searene
        27
    searene  
       2018-02-09 00:24:56 +08:00
    @ivechan 之前用过一段时间 Qt,出现问题之后网上能搜出来的解决方案不多,不像 Electron,因为依赖 js,踩的大部分坑在网上都能迅速找到解决方案。
    ptyfork
        28
    ptyfork  
       2018-02-09 00:39:56 +08:00
    亲爱的开发者们,如果你们开发的程序有面向 macOS 用户的,能不能不要用 Qt ? macOS 的 Qt 程序:VirtualBox, Wireshark 一个个难看的要死,每次不得不用的时候都是捏着鼻子用。真的好痛苦。

    如果只是为 Windows 开发的,那还是用吧。
    yech1990
        29
    yech1990  
       2018-02-09 02:16:29 +08:00 via Android
    go 本身就可以跨平台编译,之前有很不错的 gxui,还可以转 Webgl 在浏览器打开。可惜后来没有了
    xupefei
        30
    xupefei  
       2018-02-09 03:07:35 +08:00   14
    亲爱的开发者们,不论你们开发的程序面向什么用户,能不不要用 Electron ?每个 Electron 写出来的程序都狂刷进程狂吃内存,简直是觉得用户的电脑仅仅为了运行它而存在。真的好痛苦。
    cchange
        31
    cchange  
       2018-02-09 04:18:01 +08:00
    战略关注此贴 非常重要
    cchange
        32
    cchange  
       2018-02-09 06:25:30 +08:00
    有没有可能界面和业务逻辑分开写的呢? 虽然理论上一定是分开的
    loginv2
        33
    loginv2  
       2018-02-09 07:26:38 +08:00 via Android
    楼主可以写命令行程序,然后用 GUI 去调用,我是用 lazarus 去写 GUI,好处是可以跨平台,坏处是还要单独学 free pascal,而且这个跨平台目前我也没折腾过 osx 下面的程序,不知道有多少坑
    loginv2
        34
    loginv2  
       2018-02-09 07:28:19 +08:00 via Android
    另外要写跨平台的程序,重要的一点就是不要用某个程序特有的 API 这一点比选择语言更重要
    iPhone8
        35
    iPhone8  
       2018-02-09 08:04:39 +08:00
    @xupefei 同意,electron 的应用我是不会安装,电量刷刷刷就没了。
    aqtata
        36
    aqtata  
       2018-02-09 08:26:33 +08:00
    不适合。
    zjsxwc
        37
    zjsxwc  
       2018-02-09 08:29:20 +08:00
    @iPhone8

    确实碰到过。

    不过我发现我 mac 上钉钉做的还行内存占用 70M,cpu 占用是 chrome 的一半,6%左右
    wizardforcel
        38
    wizardforcel  
       2018-02-09 08:55:05 +08:00
    @searene QT 资料少???我看 Electron 是所有 GUI 框架里资料最少的吧。
    xavier007
        39
    xavier007  
       2018-02-09 09:00:20 +08:00
    不考虑跨平台,那么久 C#,如果考虑跨平台,那么就 QT,我还是比较喜欢用 C++ 结合 QT 来写客户端
    qsnow6
        40
    qsnow6  
       2018-02-09 09:08:04 +08:00
    qt 和 C# 别挑了,QT 的官方文档详细的不能再多了
    jeffersonpig
        41
    jeffersonpig  
       2018-02-09 09:10:52 +08:00
    Qt 啊……当年刚工作的时候遇到问题基本只要查 Qt 自己的手册就能解决掉了,于是我以为手册都应该是 Qt 这么全面系统而又详尽的,查阅也应该是这么方便的。然后发现能做到 Qt 这样的好像是凤毛麟角?
    XIVN1987
        42
    XIVN1987  
       2018-02-09 09:11:40 +08:00   1
    我用的小米笔记本,7 带低压版 i5、8G 内内存、256G 固态硬盘,,

    vscode 只要打开、就算什么都不做,CPU 也一直占用 5%左右,然后笔记本小风扇就开始转了

    而 Sublime 和 Qt Creator 开着阅读代码 CPU 占用 1%以内,风扇根本不转,很安静!!
    jjianwen68
        43
    jjianwen68  
       2018-02-09 09:15:00 +08:00
    yejinmo
        44
    yejinmo  
       2018-02-09 09:31:03 +08:00
    写桌面不用 C# 都闲的么?
    male110
        45
    male110  
       2018-02-09 09:37:32 +08:00
    不适合。
    chenuu
        46
    chenuu  
       2018-02-09 09:41:30 +08:00
    go 写 cli 还好
    KaoN
        47
    KaoN  
       2018-02-09 09:46:09 +08:00 via Android
    @ptyfork 用 qml 应该不会太丑,widget 就这样了。。
    nicevar
        48
    nicevar  
       2018-02-09 09:48:33 +08:00
    @searene 你是基本上连 Qt 文档都没看过吧,头一次见人说 Qt 资料少的,估计你的标准是可 ctrl+c 的少,即使这样比,electron 也远不及 Qt
    jeremaihloo
        49
    jeremaihloo  
       2018-02-09 09:49:45 +08:00
    我用 c#写跨平台桌面程序,还行
    run2
        50
    run2  
       2018-02-09 09:54:42 +08:00
    什么都是 Electron...关键是每个都放进去一个 chromium 进分发包里, (就不能本地化一个 Electron 实例,然后每个 Electron 其他的应用都调用这个?)
    https://github.com/lxn/walk
    https://github.com/andlabs/ui
    ragnaroks
        51
    ragnaroks  
       2018-02-09 10:04:00 +08:00
    我是把一个应用分成 2 部分.
    1 是功能部分,用跨平台的语言实现;
    2 是界面部分,用相应平台的语言实现.

    举个例子,我的私人机场,功能用.net core 实现,额外开个 socket 响应通信,对应平台则用 wpf/qt 等实现桌面 GUI 控制器部分.

    好处是可以把功能部分作为服务低消耗持久化运行,坏处是没有控制器(桌面 GUI)的话,改配置挺麻烦的,没有计划滋次命令行参数
    shiweifu
        52
    shiweifu  
       2018-02-09 10:42:20 +08:00
    https://github.com/asticode/go-astilectron
    一个基于 Electron 的封装
    dychenyi
        53
    dychenyi  
       2018-02-09 10:43:03 +08:00
    我觉得吧,你会用 qt,还用什么 pyqt,goqt 干啥,不累吗? pyqt,goqt 应该适合快速搭建实验性质的平台吧。到关键的地方考虑到效率是不是又要搞原生 c++然后再 wrapper 到 py 或 go ?

    如果是产品类的还是直接原生 c++搞起来。
    SuperMild
        54
    SuperMild  
       2018-02-09 10:45:16 +08:00 via iPad
    上面说不要用 qt,不要用 electron 的,个人开发者做些东西,总不能三大平台都维护一套 gui 吧,要累死。

    但是还有一个方案,做本地网站,开网页访问,完美跨平台,实现也轻松,跑起来也不占很多资源。
    chai2010
        55
    chai2010  
       2018-02-09 10:46:56 +08:00
    用 Go 写 GUI,真的是只剩情怀
    JerryV2
        56
    JerryV2  
       2018-02-09 10:48:12 +08:00
    跨平台,桌面,首选 Qt
    leeoo
        57
    leeoo  
       2018-02-09 12:22:38 +08:00
    PyQt 吧,会 C++就直接 Qt。
    在 Mac 平台下用 PyQt 写过一个小工具,用 PyInstaller 打包后给测试组用,反馈还不错。
    feverzsj
        58
    feverzsj  
       2018-02-09 12:24:04 +08:00
    go 本身就够难看的了,还能搞出什么好看的 ui
    hdczsf
        59
    hdczsf  
       2018-02-09 12:34:23 +08:00
    go 启动一个本地的 webserver,然后用默认浏览器打开,相关的东西在网页里显示设置就可以了。
    Hoozy
        60
    Hoozy  
       2018-02-09 12:51:06 +08:00
    蚂蚁笔记 就是 go 写邪恶 非常不错吧
    zjsxwc
        61
    zjsxwc  
       2018-02-09 13:03:13 +08:00
    @Hoozy
    不是吧,我解压他客户端,发现是 Electron 写的
    l1093178
        62
    l1093178  
       2018-02-09 13:21:29 +08:00
    @ptyfork 你是没见过 GTK 的程序... macOS 上面的 Qt 应用比 GTK 应用界面好 10 倍(新版的 Wireshark 也比老版好多了),当然肯定比不上原生就是了
    jhdxr
        63
    jhdxr  
       2018-02-09 13:54:31 +08:00
    推荐 PyQt 的多半是只会 Python 然后又得做图形界面,没办法只能用 PyQt 了吧。

    在看过 jetbrains 家的产品后我觉得其实 java 写跨平台的 UI 也不错

    但说实话做和用户直接相关的界面,想用跨平台来偷懒最后多半是得不偿失的。。。
    SuperMild
        64
    SuperMild  
       2018-02-09 14:09:56 +08:00
    @jhdxr 话说用 javafx 很爽(如果不要求现代化审美的界面),标准控件很丰富要啥有啥,绝大多数功能都不用依赖外部的库。

    electron 和 java 一样一大坨东西占用资源也多,electron 却火起来了。奈何 java 跨平台 gui 搞了这么多年一直不火,不知道业界在桌面这一块为什么不爱 java。本来天生有缺陷受尽鄙视的 Javascript 却时来运转大翻身了,google、facebook、microsoft 都帮助改善 Javascript。
    deadofpeople
        65
    deadofpeople  
       2018-02-09 14:17:16 +08:00
    关注一下
    winstars
        66
    winstars  
       2018-02-09 14:38:37 +08:00
    @jhdxr 能请教一下,jetbrains 家的界面用的是什么? swing ?
    bird8848
        67
    bird8848  
       2018-02-09 15:14:48 +08:00
    @loginv2 之前有看到 transmission-gui 好像就是用这个写的,跨平台
    yatseni
        68
    yatseni  
       2018-03-11 13:08:01 +08:00
    qianlifeng
        69
    qianlifeng  
       2018-03-22 23:05:49 +08:00
    AmrtaShiva
        70
    AmrtaShiva  
       2020-05-20 13:39:08 +08:00
    @loginv2 #33 你这个基于 lazarus 的 GUI 写的怎么样呢?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4241 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 10:14 PVG 18:14 LAX 03:14 JFK 06:14
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86