Block scope is a superpower since Algol.
On Tue, Sep 4, 2018 at 7:29 AM Robert Engels <[email protected]> wrote:
> The real gotcha is this though,
>
> var x int
> if blah {
> x,err := somefunc()
> }
>
> Probably does not do what you think as the value from somefunc() will not
> be available outside of the if statement...
>
> This is a poor design choice by golang IMO but it is what it is...
>
> On Sep 4, 2018, at 9:22 AM, Nate Finch <[email protected]> wrote:
>
> Others covered this, but let me try to explain. In Go, plain = just
> assigns to an already existing variable
>
> var x bool // declares a variable, it starts with the zero value for the
> type
> x = true // assigns a value to the variable
> y := true // declares the variable and assigns it a value
>
> Now, the tricky thing is when you have two values being assigned/declared,
> like foo, err := bar(). In this case, as long as either or both variables
> hasn't been declared, then := will declare one or both, and assign to one
> that's already declared. This makes it easier to do long lists of calls
> that return an error, without having to use err1, err2, etc. But it does
> kind of muddy the waters for when to use = and when to use :=.
>
> := has to always make at least one new variable. = always just copies a
> value to an existing variable or struct field. So, like, you can't ever
> use := to put something in a struct field (s.foo := bar will never work).
>
> You'll get the hang of it. You'll use := most of the time, and only = for
> spots where the stuff on the left hand side is already declared.
>
> --
> 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.
>
> --
> 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.
>
--
*Michael T. [email protected] <[email protected]>*
--
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.