bind: format generated go code before comparing with golden files

bind_test.go compares the generated Go files against golden files
checked in the repository. The bind package formats some of the
generated Go files, so any changes in the go formatter can break
the tests.

This change makes the test more robust by applying formatting based
on the currently used go version. Since a golden file often
includes multiple go files generated by the bind, the `gofmt`
function splits the golden file using the gobindPreamble marker
and then run format.Source for each chunk. In order to ease the
golden file splitting, this CL also moves the gobindPreamble
to the beginning of each generated file consistently.

It turned out bind omits formatting for some go files (generated
for reverse binding). That needs to be fixed but it is a much
bigger fix. Thus, in this CL, we apply the formatting on the
bind's output as well.

This CL also updates the gobindPreamble to follow the style guide
for generated code.

Fixes golang/go#34619

Change-Id: Ia2957693154face2848e051ebbb2373e95d79593
Run-TryBot: Hyang-Ah Hana Kim <>
TryBot-Result: Gobot Gobot <>
Reviewed-by: Bryan C. Mills <>
73 files changed
tree: 7d389aa41b90ffaad2cdfa5a72f8a346f2d22e3d
  1. .gitattributes
  2. .gitignore
  9. app/
  10. asset/
  11. bind/
  12. cmd/
  13. codereview.cfg
  14. doc/
  15. event/
  16. example/
  17. exp/
  18. geom/
  19. gl/
  20. go.mod
  21. go.sum
  22. internal/
  23. testdata/

Go support for Mobile devices

The Go mobile repository holds packages and build tools for using Go on mobile platforms.

Package documentation as a starting point:

Caution image

The Go Mobile project is experimental. Use this at your own risk. While we are working hard to improve it, neither Google nor the Go team can provide end-user support.

This is early work and installing the build system requires Go 1.5. Follow the instructions on to install the gomobile command, build the basic and the bind example apps.

Contributions to Go are appreciated. See