On Thursday, October 20, 2016 at 3:25:18 AM UTC+8, Ian Lance Taylor wrote:
>
> On Wed, Oct 19, 2016 at 11:38 AM, Michael Jones <michae...@gmail.com 
> <javascript:>> wrote: 
> > As in a number of previous questions, this one was asked poorly and the 
> answers dance all around the intention. I had decided never to enter the 
> fray of these oddly-put assertion/half questions, but since this is 
> lingering, may I suggest that this is his real question: 
> > 
> > “can we have var-style declarations in the places where the shorthand 
> syntax is allowed?” 
> > 
> > elaborating… 
> > 
> > for i := 0; i < 10; i++ {…} 
> > 
> > might also allow 
> > 
> > for var i int; i < 10; i++ {…} 
> > 
> > and likewise in other short-variable-permitting contexts. 
> > 
> > Personally, it seems that the simplest argument in favor would be 
> orthogonality and the best argument in favor would be the natural creation 
> of multiple scope local variables. This “best” is not very strong, though, 
> since it is unclear to me how you could introduce variables of multiple 
> types. 
> > 
> > Not taking sides here…just feeling that the core issue was not 
> addressed. Nor was the much better question that was not asked, “why was 
> the decision made in Go not to allow non-short variable declarations in 
> these contexts?” 
>
> Thanks for trying to clarify. 
>
> I'm not sure I buy the orthogonality argument here.  I mean, why not 
> permit any statement in the first clause of a for statement?  Why 
> restrict it to just variable declarations?  But if we accept that it 
> is restricted, I think it seems reasonable to restrict only to short 
> variable declarations, since `for var i int` seems to me to be ugly. 
>
> You can create multiple local variables in the for scope by writing, for 
> example 
>     for a, b := 0, 10; a < b; a++ { 
> (That would work with var, too). 
>
> Ian 
>

I think the short form should be used as a supplement for the normal var 
form, 
Specifically, short form should be used in the situation new variable 
identifiers and old variable identifiers are hybrid, 
or the situation only new variable identifiers exist.

But now, the short form in an inner block will shadow variables in outer 
block.
If we really want to shadow variables in outer block, then we can just use 
the normal var form.
Now the design makes the short form compete with the normal var form.

 

-- 
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