I'm trying to write a Go wrapper using CGo for ENet.
When I tried to compile my wrapper on a Mac the library was older and had a slightly different interface. 99% of the code is the same just a few C calls need to change.
What is the best practice for dealing with a problem like this in Go?
Is there some way to do conditional compilation or conditional imports?
Go does not have conditional compilation or conditional imports. Handle the type differences in C code.
Separate out the platform-specific stuff into a separate file, e.g. stuff.go
Now replace stuff.go with versions for the different platforms, like stuff_darwin.go (for Mac), stuff_windows.go, stuff_linux.go, etc.
If a file has a suffix like that, the go command will compile it only on the platform specified.