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 · 7801 次点击
    这是一个创建于 2509 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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
    ZSeptember
        6
    ZSeptember  
       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#更适用
    DOLLOR
        22
    DOLLOR  
       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#写跨平台桌面程序,还行
    sobigfish
        50
    sobigfish  
       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   ·   实用小工具   ·   2679 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:05 · PVG 23:05 · LAX 07:05 · JFK 10:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.