用途:Gova 是面向 Go 的声明式 GUI 框架,用一套代码构建 macOS、Windows、Linux 原生桌面应用。视图是普通 Go 结构体,状态通过 Scope 显式管理,go build 产出单一静态二进制;内部由 Fyne(BSD-3)驱动,公开 API 稳定且与渲染器无关。
安装:go get github.com/nv404/gova@latest;可选 CLI:go install github.com/nv404/gova/cmd/gova@latest。前置条件:Go 1.26+,以及 C 工具链(macOS 用 Xcode CLT,Linux 用 build-essential + libgl1-mesa-dev,Windows 用 MinGW)。
主要能力:组件即实现 Body(s *g.Scope) g.View 的结构体,字段为带零值默认的类型化 props;状态用 g.State、g.Derived、g.Effect、g.PersistedState;布局有 VStack、HStack、ZStack、Scaffold;内置 Text、Button、TextField、Toggle、Image、Spacer、Divider 等视图与字体、间距、语义颜色常量;支持原生对话框(macOS 为 NSAlert/NSOpenPanel,其他平台回退 Fyne)、macOS Dock 徽标/进度/菜单、主题切换、组件组合与多视图导航、运行时设置应用图标。
使用方式:入口为 g.Run("My App", g.Component(MyComponent{}))。CLI 命令:gova dev ./path/to/app 热重载;gova build ./path/to/app 编译到 ./bin/<name>;gova run ./path/to/app 构建并启动一次。可用 go build -ldflags "-s -w" 剥离符号。
限制:需 cgo 与 C 工具链;Linux 需 OpenGL 相关依赖;简单应用二进制约 23–32 MB(捆绑 Fyne OpenGL 渲染器);Dock/任务栏集成目前仅 macOS 完整支持,Windows/Linux 计划中;状态更新必须调用 Set,原地修改切片/映射不会触发重渲染;API 处于 pre-1.0,可能破坏兼容,建议固定版本标签并查看 CHANGELOG。文档见 https://gova.dev,包见 https://pkg.go.dev/github.com/nv404/gova。