The survey that was recently posted here asked, among other things, what 
changes to the language would be most useful.  The one that immediately 
came to my mind was getting rid of the need for redundant type specifiers 
(examples below).  It occurred to me that this must have been discussed 
before I joined the Go scene, probably multiple times — but apparently I 
haven't hit on the right search keywords to find it (sorry about that).  So 
my question is, why does the language require these redundant type 
specifiers?  Is there a need for them that I'm just missing?

Example 1:

type S struct {
        A []int
        B []string
}
var RequiredToday = S{
        []int{1, 2},
        []string{"a", "b"},
}
var WithoutRedundancy = S{
        {1, 2},
        {"a", "b"},
}



The compiler has all of the necessary information, from the struct type 
definition, to interpret WithoutRedundancy.  Why is that not allowed?

Example 2:

type FuncType func(a string, b int, c float64) (string, error)

func RequiredToday(a string, b int, c float64) (string, error) {
        ...
} // and no way to explicitly see that it's supposed to be a FuncType

func WithoutRedundancy FuncType {
        ...
}



Admittedly this is a bit more of a stretch, but again, the compiler has all 
of the necessary information from the type definition (which, you'll note, 
included names for the parameters).  Writing switch tables, HTTP handlers, 
etc., would be a lot more convenient without having to repeat all of the 
boilerplate.  Is there a reason the language doesn't permit this?

If there isn't a strong reason for these required redundancies, permit me 
to advocate removing them.  As far as I can tell, doing so would not 
introduce any incompatibilities.

Regards,
Steve

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to