在Go语言中进行GUI界面开发,你有几个选择。以下是一些流行的Go语言GUI框架和库:

  1. Fyne:这是一个现代化的、跨平台的GUI库,专为Go语言设计。它提供了直观的API和丰富的控件,支持多种平台,包括Linux、macOS和Windows。你可以使用Fyne创建漂亮的界面,并且它的代码相对简单。例如,创建一个简单的“Hello World”窗口的代码如下:

    package main
    import (
       "fyne.io/fyne/v2/app"
       "fyne.io/fyne/v2/container"
       "fyne.io/fyne/v2/widget"
    )
    func main() {
       a := app.New()
       w := a.NewWindow("Hello")
       w.SetContent(container.NewVBox(
           widget.NewLabel("Hello Fyne!"),
           widget.NewButton("Hi!", func() {
               hello.SetText("Welcome :)")
           }),
       ))
       w.ShowAndRun()
    }
    

    如果你遇到中文字符显示问题,可能需要额外处理字体设置。

  2. Wails:这是一个采用C/S模式的框架,后端用Go语言编写,前端页面可以使用Vue、React或Angular。但是,前端页面使用系统内置浏览器进行渲染,这可能会导致一些问题,比如在Windows下只能使用IE11。

  3. GoWalk:这是一个跨平台GUI库,提供了丰富的控件和功能,使得开发GUI界面变得简单。以下是一个使用GoWalk创建一个简单窗口的示例代码:

    package main
    import (
       "github.com/lxn/walk"
    )
    func main() {
       walk.MainWindow{
           Title: "Hello, GoWalk",
           MinSize: walk.Size{Width: 300, Height: 200},
       }.Run()
    }
    
  4. Golang-UI:这是一个轻量级的跨平台GUI库,具有简单易用的API和快速的布局功能。以下是一个使用Golang-UI创建一个按钮的示例代码:

    package main
    import (
       "github.com/andlabs/ui"
    )
    func main() {
       err := ui.Main(func() {
           button := ui.NewButton("Click Me")
           window := ui.NewWindow("Hello", 200, 100, false)
           window.SetChild(button)
           window.OnClosing(func(*ui.Window) bool {
               ui.Quit()
               return true
           })
           window.Show()
       })
       if err != nil {
           panic(err)
       }
    }
    
  5. Lorca:这是一个基于Chrome浏览器的GUI库,允许使用Go语言调用前端技术构建GUI应用。以下是一个使用Lorca创建一个简单窗口的示例代码:

    package main
    import "github.com/zserge/lorca"
    func main() {
       ui, _ := lorca.New("", "", 480, 320)
       defer ui.Close()
       ui.Load("data:text/html,<h1>Hello, Lorca!</h1>")
       <-ui.Done()
    }
    

选择哪个框架取决于你的具体需求,比如你是否需要跨平台支持,你的前端技术栈是什么,以及你对界面美观度的要求等。