GUI programming in Go is a little bit tricky. The infamous issue
regarding interacting with legacy, GUI frameworks is that
most graphics related APIs must be called from the main thread.
The issue violates the concurrent nature of Go: A goroutine maybe
arbitrarily and randomly scheduled or rescheduled on different running
threads, i.e., the same piece of code will be called from different
threads over time, even without evolving the go keyword.
About six months ago, I did a presentation
that talks about how to conduct a reliable benchmark in Go.
Recently, I submitted an issue #41641 to the Go project, which is also a subtle issue that you might need to address in some cases.