Golang可以做界面吗?如何做?
▍Golang可以做界面吗?如何做?
如果纯做桌面应用开发推荐go+govcl,支持跨平台,有现成的设计器,方案也比较成熟,简单易学,类似delphi界面设计器,体积也不大。
▍Golang可以做界面吗?如何做?
说起界面,这是一道坎,有人或许会说,GO为什么要写界面UI呢,这本来不是GO擅长的部分,也不是GO该干的事情,这句话我就不爱听了。
举个列子,比如我们用GO语言写个服务器,这个服务器就是用作直播视频聊天的服务器,它的功能包含直播房间在线列表人员,当然GO语言设计的时候,服务器记录了在线列表的 userId、roomId、token、level、ip、chatConent等等。比如我们要监视某个房间的人员列表,看他是否用协议刷了人气,其实就是统计一个IP上有多少帐号,或者监控房间里面是否有机器人在发言,并随时封禁它,或者统计在线直播列表的人数等等,我们用命令行是能够操作上述的东西,但是这么多的动作你能记得住那么多的命令吗?
而且上述那么多的东西显示在黑色框子里面,眼睛看久了不累吗?一旦命令行用错了,承担起后果吗?
在命令行里面去选择一个用户或者房间那是一件多么痛苦的事情啊。
而且这些后台管理员又不是技术人员,很可能会出错。
因此界面是必须有的。
GO语言中选择界面是一件纠结的事情,github上面GO-UI要么项目几年没人更新了,要么简单的功能让人不多看一眼。
比如 谷歌自带gxui已经死掉了,goqt的下载一大堆的东西去配置,go-gtk配置也麻烦,而且功能也是简单。
假如在linux下,我建议还是选择后面的两个,那是没得选择的选择。
在WINODWS 目前推荐https://github.com/lxn/walk 这个东西,目前在GITHUB上最新的版本是需要GO1.8去构建的,否则百分百会出错。
下载下来看下demo
有复制粘帖、数据绑定、图片显示、webkit、绘图、listbox、托盘、tab、滑动条、拖动文件、进度条、按钮、选择框、单选框等等。功能挺全面的,可以去实验下。
先来了解下句柄,什么叫做句柄?句柄可以说是windows上集合所有打开了的界面程序上的控件ID一样,代表了唯一身份,其实底层还是指针,每次打开程序,句柄由系统随机分配命名,不存在两个句柄是一样的。句柄包含了窗口句柄和控件句柄。
walk下载下来的包这么小,而且编译出来的程序也这么小,那就肯定是调用了WINDOWS内置的一些com组件和active控件,这些东西存在于DLL中,一般位于在system32目录下或者程序运行的当前目录下,像QT5这些不是调用window内置的,因此QT编译出来的程序是找不到控件句柄的。比如QQ、YY、迅雷这些软件是找不到控件的句柄的,只能找到窗口句柄,因为这些控件是DX画出来了。
句柄是一个类似整数一样的数值。
在windows设计不同语言的交互的时候,dll文件是一条逃不过去的坑,先来看下C/C++、GO的类型不同的定义
Win32 C/C++ golang 字符对照表
WIN32类型C/C++ 类型GO 类型
HANDLE void *uintptr
BYTEunsigned charuint8, byte
SHORT shortint16
WORD unsigned short uint16
INTintint32, int
UINT unsigned int uint32
LONGlong int32
BOOLint int
DWORDunsigned long uint32
ULONG unsigned long uint32
CHARcharbyte
WCHAR wchar_t uint16
LPSTRutf8/char **byte
LPCSTRconst utf8/char * *byte, syscall.StringBytePtr(), xc.UTF8PtrToSting()
LPWSTR wchar_t * *uint16
LPCWSTR const wchar_t **uint16, syscall.StringToUTF16Ptr()
FLOAT floatfloat32
DOUBLEdoublefloat64
LONGLONG __int64 int64
DWORD64 unsigned __int64uint64
▍Golang可以做界面吗?如何做?
可以试用下wails,可以跨平台,用vue或者react等h5前端框架做界面,生成的应用程序比electronjs小很多,因为不会内嵌个浏览器。https://github.com/wailsapp/wails
▍Golang可以做界面吗?如何做?
golang qt这个就不多说了,govcl通过调用vcl界面。两个项目都可以看看。都支持跨平台。govcl是国人开开发的。再补充一个,直接用web做界面也是一个不错的选择。
▍Golang可以做界面吗?如何做?
golang+walk,可以做比较一般功能的PC软件
------------------
推荐阅读: