TLDR: Why should I NOT the alias form `type ... = interface {...}` instead of the standard `type ... interface {...}` for interface declarations?
The extended question: The normal type definition for an interface in go would be `type TypeName interface {...}`. This results in a new type, which is assignable to other types of the similar interfacce, such that this is valid: ``` type I1 interface{ Foo() } type I2 interface{ Foo() } var _ I1 = I2(nil) ``` But these are different types, such that any function with one of these in the signature can't be converted to a similar function with the other, such that this is NOT valid: ``` var _ func(I1) = (func(I2))(nil) ``` Declare the types as aliases <https://yourbasic.org/golang/type-alias/> however, and the limitation dissapears: ``` type I1 interface{ Foo() } type I2 interface{ Foo() } var _ I1 = I2(nil) // still valid var _ func(I1) = (func(I2))(nil) // now valid ``` A runnable example of the below using `http.ResponseWriter`: - without alias <https://play.golang.org/p/dKdh80LNMt0> - with alias <https://play.golang.org/p/sR5hB0ParA0> My point being using aliases offers an advantage (more flexible assignment and interface implementation) and to my knowledge no meaningful drawback. So why not use it everywhere? -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/d9595614-ce72-4602-8ead-67e9a1427181n%40googlegroups.com.