Interface compliance at compile-time in Go