Re:Go Replaces Interface{} with 'Any'
by eweise on Tuesday December 14, 2021 @04:39PM
(#29558257)
Couldn't unbounded just be [T]? Why the extra typing?
[ Parent
| on HN ]
Re:Go Replaces Interface{} with 'Any'
by MadcapJake on Tuesday December 14, 2021 @04:57PM
(#29558520)
I am not well-versed in Go, but isn't it because Go supports specifying multiple parameters with the same type by just using a comma. Your suggestion would lead to syntactic ambiguity except when only a single parameter is provided. Additionally one can provide only types when parameter values are not needed and this requires there to be a typename to differentiate between no parameters.
Re:Go Replaces Interface{} with 'Any'
by earthboundkid on Tuesday December 14, 2021 @08:33PM
(#29560894)
With generics, the metatype of a type variable is an interface type. If you just had T, it’s grammatically incomplete because you don’t specify the metatype. I guess you could just assume the any type if it’s incomplete, but that’s an unnecessary inconsistency in the grammar.
I don't know. Making constraints optional is the way it works in all the other languages I use.
Re:Go Replaces Interface{} with 'Any'
by mseepgood on Tuesday December 14, 2021 @04:48PM
(#29558398)
No, that would be a parsing ambiguity with arrays. And the consistency of type parameter lists with normal parameter lists where types are mandatory is an additional benefit.
Re:Go Replaces Interface{} with 'Any'
by Intermernet on Wednesday December 15, 2021 @07:30AM
(#29565082)
It's not really extra typing. It's just a syntactic convenience considered beneficial by the core team. It doesn't actually break compiler parsing in any way, but it may lead to human confusion in cases where a variable or constant has been named "any". This is probably very rare, and the code will still compile.