
Summary
In this chapter, we looked at how the Go language is very well-suited to developing graphical applications. Its design for handling concurrency makes the types of multithreading needed by GUIs easy to manage. Channels, the main thread-communication feature, are a little hard to learn, but through some basic examples, we saw how common concurrency issues could easily be avoided. The write-once-compile-anywhere ethos of Go means that developers can easily compile the same code and deliver native apps across most common platforms from a single codebase using the provided tools. As a modern language, it's designed to operate in a connected world and its support for network communications and web services is excellent – we ran examples that illustrated how objects can be easily transformed to and from common web formats.
Having explored the many ways that Go suits graphical application development, we also reflected on the many toolkits available to choose from. Despite not having a standard user interface, there are many possibilities for building great-looking graphical apps with Go. In Chapter 4, Walk - Building Graphical Windows Applications, Chapter 5, andlabs UI - Cross-platform Native UIs, Chapter 6, Go-GTK - Multiple Platforms with GTK, Chapter 7, Go-Qt - Multiple Platforms with Qt Chapter 8, Shiny - Experimental Go GUI API Chapter 9, nk - Nuklear for Go, and Chapter 10, Fyne - Material Design based GUI, we'll look at the different toolkits available and how to start building your first Go-based GUI. We start by exploring how to build traditional user interfaces, beginning with apps for Microsoft Windows in Chapter 4, Walk - Building Graphical Windows Applications.