A GUI can be created with a go package. There is no native support. There are several packages for making go gui’s. The most common are web-based and desktop-based.

Many apps are going in the web-based direction, think Google apps or Cloud apps. One advantage of this is that apps will work on many different operating systems (Mac, Windows).

Which package is best depends on your needs.

Web based Go GUI

App

The app package can create apps with GO, HTML and CSS.

It’s designed to use a driver. A driver contains allows the app package to work on a platform. There seems to be only a MacOS and web driver. Meaning other platforms are not supported.

go-astilectron

The go-astilectron package is an Electron based setup. You can make an app with HTML/JS/CSS and it’s cross platform

  • Electron is made with Node.js and Chromium. That means your app will run inside a special Chromium browser.

  • Astilectron is an Electron app, it provides an API over a TCP socket that allows executing Electron’s method as well as capturing Electron’s events.

  • Go-astilectron are Go bindings for the Astilectron app.

There is a demo app which shows a rather nice interface.

go-sciter

Go bindings for Sciter: the Embeddable HTML/CSS/script engine for modern desktop UI development. Cross platform.

This is essentially a Go binding for Sciter. This (commercial) package can made cross-platform and embeddable user interface with JavaScript, CSS, HTML.

gowd

Desktop UI with GO, HTML, CSS and NW.js. Apps made with gowd are cross platform.

The main component here is NW.js (previously known as node-webkit). Use Node.js modules directly from DOM.

It runs on all major platforms and uses a combination of Chromium and Node.

Desktop based Go GUI

Go-gtk

Bindings to the gtk package. This is a desktop package often used in Linux (gnome interface).

You can create GUI interfaces that have the GTK widgets. Bare in mind that not all widgets have been binded (see website).

gotk3

Gtk3 is the newest version of Gtk. There are Go bindings for GTK3.

The package comes with several examples.

It requires:

  • GTK 3.6-3.16
  • GLib 2.36-2.40
  • Cairo 1.10 or 1.12
  • A recent Go (1.3 or newer)

qt

Qt binding for Go (support for Windows / macOS / Linux / Android / iOS / Sailfish OS / Raspberry Pi). QT is a popular (commercial) framework for building cross platform apps.

There’s a gallery with some examples apps.

ui

A tiny cross-platform webview library for Golang to build modern cross-platform GUIs. It’s cross platform and platform-native, but very basic.

walk

Windows application library kit for Go. You can make native Windows apps with this, but no other operating system is supported.

webview

Cross-platform webview window with simple two-way JavaScript bindings (Windows / macOS / Linux). This is based on WebKit (Gtk/Cocoa) and MSHTML (Windows).