This is a brief post highlighting a curious aspect of the declaration syntax in Go.
Most Go programmers know that the following of import
declarations are equivalent
import "fmt" import "math/big" // same as import ( "fmt" "math/big" )
The same applies to const
declarations
const FORTYTWO = 42 const TRUE = 1 // same as const ( FORTYTWO = 42 TRUE = 1 )
But perhaps you didn’t know that the syntax is also valid for type
declarations. For example, the following is valid syntax in Go.
type ( B struct{ a, b int } C interface { Hello() error } )
However because the func
declaration has been extended to place methods on types, the following is not valid syntax
func ( main() { fmt.Println("wowzers") } )