To add to Rob64's answer, he states that the end result is the same, but do not mistake the fact that you'll end up with two different types.
type LightSource = struct { // Type struct
R, G, B, L float32
X, Y, Z, A float32
//...
}
type LightSource struct { // Type LightSource
R, G, B, L float32
//...etc
}
I feel that there's a lot of confusion in the fact that you'll end up with a different type, this means that if somewhere in your code you enforce a type A, and you use the wrong way of type aliasing, you'll end up with absolutely zero restriction on your "type alias"; the end-goal would really be to differentiate your types if you do end up creating a type alias, but that's obviously void if you make this mistake.
Go play<<