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)