News for hackers. Stuff that matters.
Re:Go is boring, and that’s fantastic by ithkuil on Friday July 03, 2020 @04:03AM (#23722016)
Can you make an example of how it would be confused with interfaces in weird ways?
Re:Go is boring, and that’s fantastic by entha_saava on Friday July 03, 2020 @05:42AM (#23722557)
Maybe something like a union of struct type T and interface type I, but T also satisfies I. Then you have to specify some extra things / add features to keep it symmetric and being able to construct it both ways equally easily. GO Authors have a primary goal of

Secondly, they think interfaces cover many of the need of variant types and they don't want some non-orthogonal feature.

Re:Go is boring, and that’s fantastic by ithkuil on Friday July 03, 2020 @10:41AM (#23724442)
imagine an interface{} that can be annotated to say "you can only assign values ofItypes A, B and C to it. E.g. interface(A,B,C){}

Since it's an interface{} it has no behaviour, the only thing you can do is a type assert / type switch.

By extension, you could add some methods: interface(A,B,C){Foo(bool) int} This fails statically unless A, B, and C implement said interface. If they do, then this interface has exactly the same semantics as the normal Go interfaces, except that only types A, B and C can be assigned to it (and not type D even if it implements Foo(bool) int