On Sunday, August 28, 2016 at 1:25:16 AM UTC+8, [email protected] wrote:
>
> There are no subtypes in go, so no covariance or contravariance, which
> explained a lot of limitations of Go type system. The problem is that some
> level of covariance is hardcoded in the compiler (string to []byte ...)
> which makes me think that go designers understand the value of it and know
> that there are cases where it is needed. It just the same problem as
> generics vs append. append is a generic function of type
> append([]T,T...)[]T which behavior is hardcoded in the compiler instead of
> being generalized. Go designers understand the value of generics in that
> specific case without letting the user define their own functions with the
> exact same behavior.
>
>
> https://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science)
>
> All languages are opinionated, I think that adjective doesn't match Go
> features. Go is a language that is "restricted" but bear with me.
>
> The problem with being fine with that fact is that, while Go has these
> restrictions, Go allows a lot of dynamic behavior at runtime through
> reflection (with a speed cost, though caching definitely helps) which is a
> paradox for a statically typed language. The temptation of using reflection
> to work around language restrictions becomes huge every time one is
> confronted to these limitations.
>
> It would be interesting to know if allowing(or not) reflection in userland
> was debated among Go designers at some point.
>
> Regards.
>
I'm a performance guy. I never used the reflection feature. I also try to
avoid using the zero method set interface{}.
Lacking generic is really a restriction for building high performance std
libs.
But supporting genetic will make some std libs obsolete.
For user programs, it is acceptable for me to use third-party generic tools.
What I want most is the JIT feature, which will make golang enter the big
data area.
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.