It is not a new declaration, it is definitely an assignment. This can be 
determined because (in Go) a new declaration has effects when closing over 
variables: https://play.golang.org/p/a_IZdOWeqYf

(ignore the obvious race condition; it works the same but looks uglier with 
the requisite locks: https://play.golang.org/p/OXBK5XEg9Yf)

On Tuesday, January 9, 2018 at 2:20:06 PM UTC-8, Ayan George wrote:
>
>
>
> On 01/09/2018 04:45 PM, Ian Lance Taylor wrote: 
> > On Tue, Jan 9, 2018 at 1:02 PM, Jim Bishopp 
> > <james....@gmail.com <javascript:>> wrote: 
> >> 
> >> Has there ever been a discussion about allowing new identifiers and 
> >> selectors in short variable declarations? 
> >> 
> >> var a struct { x int } b, a.x := 1, 2 
> >> 
> >> ERROR: expected identifier on left side of := 
> > 
> > That idea appears in https://golang.org/issue/377, along with many 
> > others. 
> > 
>
> I had the same question myself. I settled on the idea that that is a 
> short declaration -- not an assignment -- though it does re-declare 
> existing variables (of the same type!). That behaves like assignment 
> but I think it is still declaration. 
>
> But its behavior makes sense if you consider that you can't declare or 
> re-declare struct member. 
>
> -ayan 
>

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