Declaration and Assignment
Go is statically typed. Before you can bind a variable, you have to declare it:
var age int
This declares a new variable called
age of type Integer. The variable is declared, but not initialized.
If you want to assign something to a variable, you’ll do it like this:
age = 35
There is a short-hand operator:
age := 35
The “walrus operator” is syntactic sugar for the two commands:
var age int age = 35
Asterisk and Ampersand
Go has two syntactic constructs that are unclear to newcomers: the asterisk (
*) and the ampersand (
Go has pointers. Pointers reference a location in memory where a variable is stored.
The asterisk (
* operator) is used for dereferencing the pointer location.
From A Tour of Go:
fmt.Println(*p) // read i through the pointer p *p = 21 // set i through the pointer p
The ampersand (
& operator) generates a pointer to its operant:
age := 35 // stores the value agePointer &age // stores the pointer address (reference)