This is a spin-off post from my main post of Visual how to guide to Go variables, go check it out.
Γ°ΕΈββ° You canβt use it to declare package-level variables.
illegal := 42
func foo() {
legal := 42
}
Γ°ΕΈββ° You canβt use it twice:
legal := 42
legal := 42 // <-- error
Because, := introduces "a new variable", hence using it twice does not redeclare a second variable, so it's illegal.
Γ°ΕΈββ° You can use them twice in βmulti-variableβ declarations, if one of the variables are new:
foo, bar := someFunc()
foo, jazz := someFunc() // <-- jazz is new
baz, foo := someFunc() // <-- baz is new
This is legal, because, youβre not redeclaring variables, youβre just reassigning new values to the existing variables, with some new variables.
Γ°ΕΈββ° You can use them if a variable already declared with the same name before:
var foo int = 34
func some() {
// because foo here is scoped to some func
foo := 42 // <-- legal
foo = 314 // <-- legal
}
Here, foo := 42
is legal, because, it redeclares foo
in some() func
's scope. foo = 314
is legal, because, it just reassigns a new value to foo
.
Γ°ΕΈββ° You can use them for multi-variable declarations and assignments:
foo, bar := 42, 314
jazz, bazz := 22, 7
Γ°ΕΈββ° You can reuse them in scoped statement contexts like if, for, switch:
foo := 42
if foo := someFunc(); foo == 314 {
// foo is scoped to 314 here
// ...
}
// foo is still 42 here
Because, if foo := ...
assignment, only accessible to that if clause.
Γ’Β€ï¸ Share this on twitter. Please share the love.
Γ°ΕΈΒΒ¦ Iβm mostly tweeting about Go, you can follow me on twitter: @inancgumus.
Γ°ΕΈβΒ₯ Iβm also creating an online course to teach Go. Join to my newsletter!
You will receive notifications about my new posts and upcoming online Go course (every Wednesday).
Originally published on Go Short Variable Declaration Rules in Learn Go Programming.
Top comments (0)