Golang可以做界面吗?如何做?_golang可以写操作系统吗

由网友 程序员47 提供的答案:

是的,Go 语言可以用来构建图形用户界面(GUI)应用程序。虽然 Go 语言在 Web 开发和后端服务开发方面更为流行,但也有不少 Go 语言的 GUI 库可以帮助实现桌面应用程序。以下是几个用于 Go 语言开发 GUI 的库和框架:

  1. Fyne: Fyne 是一个用于构建跨平台的 GUI 应用程序的易用库。它依赖于 OpenGL 进行渲染,能够生成适用于各种操作系统和硬件平台的原生应用程序。适用于 Linux、macOS、Windows 和更多平台。项目地址:https://github.com/fyne-io/fyne
  2. gioui:这是一个跨平台的库,可以用于创建无特定平台依赖的用户界面。Gioui 支持 macOS、Windows、Linux、Android、iOS 和 WebAssembly。项目地址:https://github.com/gioui/gio
  3. walk: 这是一个适用于 Windows 平台的 Go 语言 GUI 库,专注于原生 Windows API,并提供了简化的界面和组件。如果您只需为 Windows 平台构建应用程序,walk 是一个不错的选择。项目地址:https://github.com/lxn/walk
  4. go-gtk: Go-GTK 是基于 GTK+ 的 Go 语言绑定库,可以开发 Linux(GTK+)、Windows(GTK+)、macOS 上的 GUI 应用。项目地址:https://github.com/mattn/go-gtk

根据您的具体需求和目标平台,您可以选择上述库之一来开始您的 Go 语言 GUI 开发。在这些库文档的帮助下,您可以熟悉它们的使用方式,并编写自己的界面代码。这些文档通常包含示例代码、教程和 API 文档,可用于理解如何创建和管理窗口、控件以及实现事件处理和自定义绘制。

由网友 神州局 提供的答案:

说起界面,这是一道坎,有人或许会说,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

BYTE unsigned char uint8, byte

SHORT short int16

WORD unsigned short uint16

INT int int32, int

UINT unsigned int uint32

LONG long int32

BOOL int int

DWORD unsigned long uint32

ULONG unsigned long uint32

CHAR char byte

WCHAR wchar_t uint16

LPSTR utf8/char * *byte

LPCSTR const utf8/char * *byte, syscall.StringBytePtr(), xc.UTF8PtrToSting()

LPWSTR wchar_t * *uint16

LPCWSTR const wchar_t * *uint16, syscall.StringToUTF16Ptr()

FLOAT float float32

DOUBLE double float64

LONGLONG __int64 int64

DWORD64 unsigned __int64 uint64

Golang可以做界面吗?如何做?_golang可以写操作系统吗

由网友 信仰者1023 提供的答案:

可以试用下wails,可以跨平台,用vue或者react等h5前端框架做界面,生成的应用程序比electronjs小很多,因为不会内嵌个浏览器。https://github.com/wailsapp/wails

由网友 香草咖啡0o 提供的答案:

Golang是可以做界面的,可以使用第三方GUI库,例如fyne、gotk3、ui和qt等。拿fyne来举例:

package main

import (

"fyne.io/fyne/v2"

"fyne.io/fyne/v2/app"

"fyne.io/fyne/v2/container"

"fyne.io/fyne/v2/widget"

)

func main() {

myApp := app.New()

myWindow := myApp.NewWindow("My Application")

hello := widget.NewLabel("Hello Fyne!")

myWindow.SetContent(container.NewVBox(hello))

myWindow.ShowAndRun()

}

使用fyne库创建一个名为"My Application"的窗口,并在其中添加一个名为"Hello Fyne!"的标签。可以使用不同的容器布局和小部件组合来创建更复杂的界面。

值得注意的是,尽管Golang可以用来创建界面,但它并不像其他专门用于界面开发的语言(例如Java和C#)那样具有丰富的GUI开发工具和生态系统。因此,如果需要高度定制化的GUI,或需要利用大量已有的GUI组件和工具库,可能需要考虑使用其他语言或框架。

由网友 程序员叶子 提供的答案:

是的 ,go可以做界面,但普遍的做法是不做。go还是用于做后端开发较强,发挥它的优势方面如高并发跨平台编译快速api开发等等。

有人说那我需要个监控界面,不想要命令行操作呢?很简单呀,单独做个客户端呀,如做流量控制设置参数设置什么的 ,没必要非得和业务逻辑处理搞一起,如qt或者搞个web界面,现在通信都很方便的,http,tcp,ws你随便上,和你主程序很容易通信。

由网友 动动漫漫丫 提供的答案:

Golang可以使用第三方库来创建图形用户界面(GUI)。以下是一些常用的第三方GUI库:

  1. Fyne:Fyne是一个用Go编写的跨平台GUI库,提供了多种窗口和控件,如按钮、文本框、滑块等。它支持多种操作系统,包括Windows、Mac和Linux。
  2. Go-GTK:Go-GTK是一个使用GTK+库编写的GUI库,GTK+是一个广泛使用的跨平台GUI工具包。通过Go-GTK,你可以创建具有自定义界面的应用程序。
  3. Gio:Gio是一个用于构建跨平台GUI应用程序的库。它提供了多种窗口和控件,以及一些常见的界面元素,如菜单、工具栏和对话框。
  4. Walk:Walk是一个用于创建Windows桌面应用程序的GUI库。它提供了与标准Windows控件类似的各种控件,如按钮、文本框和列表框。

要使用这些库来创建GUI应用程序,你需要按照库的文档和示例进行操作。具体步骤可能因库而异,但通常包括安装库、创建窗口、添加控件和处理事件等步骤。

需要注意的是,与一些更流行的GUI库相比,这些库可能还相对不太成熟。因此,在使用这些库时,你可能会遇到一些限制或不完整的特性。在进行选择时,你应该根据你的具体需求和个人偏好来评估这些库的适用性。

由网友 勇者风声Nh 提供的答案:

Golang 可以做界面,可以使用第三方库来实现,其中比较流行的有以下几个:

  1. Fyne:一个跨平台的 GUI 库,支持 Windows、macOS、Linux 和 Raspberry Pi 等平台。
  2. Qt:一个基于 C++ 的跨平台 GUI 库,可以通过 Go 的 CGO 机制来使用。
  3. Wails:一个使用 Web 技术构建跨平台桌面应用的库,支持使用 Go 和 Vue.js 进行开发。
  4. Walk:一个 Windows 平台专用的 GUI 库,可以使用 Go 进行开发。

部分文章源于互联网收集,不代表默子网络立场,版权归原作者所有,如若转载,请注明出处:https://www.html369.cn/10560.html