目前Go语言主要活跃在区块链、云计算、命令行工具和后端服务等领域。这些领域基本上和GUI关系不大。近来出现了很多跨平台的Go GUI项目。虽说用井喷之势形容有些过了,但是的确有加速的迹象。难道Go语言将要开辟出另一大块疆土?
忙中偷闲,整理了一份目前GUI/图形/图像相关的Go项目列表。见下。欢迎补充。
(注意:最新版在这里。)
原生GUI绑定
dlgs是一个跨平台的显示对话框和输入框的Go代码库。
glfw是一个GLFW3绑定库。
go-mobile支持移动平台应用开发(Android和iOS)。(其中包含OpenGL ES 2.0和ES 3.0绑定库。)
go-sdl2是一个SDL2绑定库。
go-gtk是一个GTK2绑定库。
gotk3是一个GTK+3绑定库。
GXUI,Google员工出品,但已经停止维护很久了。
qt是一个qt绑定库。
shiny是一个跨平台的UI库。貌似荒废了。
systray是一个跨平台的系统托盘通知图表和菜单库。
trayhost是另一个跨平台的系统托盘通知图表和菜单库。
ui提供了原生GUI绑定。
Walk是一个"Windows Application Library Kit"绑定。
w32.go是一段使用Windows系统调用生成GUI的小例子。
XGB是一个X系统绑定。
xgbutil是一个X系统绑定工具库。
基于HTML的GUI
go-astilectron基于Electron,使用HTML/JS/CSS来构建跨平台GUI应用。
go-sciter是一个Sciter绑定。
gowd基于nwjs,使用HTML/JS/CSS来构建跨平台GUI应用。
Wails另用原生浏览器,使用HTML/JS/CSS来构建跨平台GUI应用。
webview基于WebKit,使用HTML/JS/CSS来构建跨平台GUI应用。
非原生GUI
duit是一个纯Go跨平台UI库。
Fyne使用OpenGL实现立即模式跨平台GUI。
gi是一个基于场景图的2D和3D GUI库。
Gio是一个轻便的立即模式跨平台GUI。支持:iOS/tvOS, Android, Linux (Wayland), macOS, Windows和browsers (Webassembly/WebGL)。
go-flutter实现了Flutter Embedding API。
goey(这个的介绍没看太明白,各位自个儿研究一下。)
gui是一个并发GUI库。
imgui-go是一个Dear ImGui绑定炉。
3D图形API绑定
d3d9是一个Direct3D9绑定。
gl是一个OpenGL绑定。(另外GLHF对gl3.3进行了更接近于Go风格的包装。)
vulkan是一个Vulkan绑定。
2D矢量图形库
gg是一个纯Go矢量图形库。
go-cairo是一个cairo绑定。
go-skia是一个skia绑定。
svgo用来生成SVG 1.1规范的svg文件。
字体处理相关
freetype是一个Freetype字体渲染器光栅化Go库。
pixfont是一个位图字体库。
游戏开发相关
请访问Awesome Go获取列表。
图像处理相关
image标准库。
官方image补充库。
请访问Awesome Go获取更多。
本文首发在微信Go 101公众号,欢迎各位转载本文。Go 101公众号将尽量在每个工作日发表一篇原创短文,有意关注者请扫描下面的二维码。
关于更多Go语言编程中的事实、细节和技巧,请访问《Go语言101》官方网站:https://gfw.go101.org。如果官网被墙,请访问《Go语言101》github项目:https://github.com/golang101/golang101。