It's a property of the implementation rather than the spec, but the Go compiler resolves all type declarations at compile-time. (It can even inline them, if the container function is small enough.)

https://gist.github.com/peterbourgon/9251445

> 14:42 <+Aram> types are nothing but size and offset information the compiler uses to lay out code.
> 14:42 <+Aram> so using only logic you can deduce that where you define them doesn't matter at runtime.