Version: v0.6.1 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Jun 26, 2021 License: ISC Imports: 14 Imported by: 380



Go bindings for GTK+ 3. Supports version 3.6 and later.

Functions use the same names as the native C function calls, but use CamelCase. In cases where native GTK uses pointers to values to simulate multiple return values, Go's native multiple return values are used instead. Whenever a native GTK call could return an unexpected NULL pointer, an additional error is returned in the Go binding.

GTK's C API documentation can be very useful for understanding how the functions in this package work and what each type is for. This documentation can be found at

In addition to Go versions of the C GTK functions, every struct type includes a method named Native (either by direct implementation, or by means of struct embedding). These methods return a uintptr of the native C object the binding type represents. These pointers may be type switched to a native C pointer using unsafe and used with cgo function calls outside this package.

Memory management is handled in proper Go fashion, using runtime finalizers to properly free memory when it is no longer needed. Each time a Go type is created with a pointer to a GObject, a reference is added for Go, sinking the floating reference when necessary. After going out of scope and the next time Go's garbage collector is run, a finalizer is run to remove Go's reference to the GObject. When this reference count hits zero (when neither Go nor GTK holds ownership) the object will be freed internally by GTK.