Variable
Zero value concept
Every single value we create must be initialized. If we don't specify it, it will be set to
the zero value. The entire allocation of memory, we reset that bit to 0.
1 - Boolean false
2 - Integer 0
3 - Floating Point 0
4 - Complex 0i
5 - String "" (empty string)
6 - Pointer nil
Strings are a series of uint8 types.
A string is a two word data structure: first word represents a pointer to a backing array, thesecond word represents its length.
If it is a zero value then the first word is nil, the second word is 0.
var is the only guarantee to initialize a zero value for a type
Conversion vs casting
Go doesn't have casting, but conversion.
Instead of telling a compiler to pretend to have some more bytes, we have to allocate more memory.
Specify type and perform a conversion.
aaa := int32(10)
go reference type
Reference types: slice, map, channel, interface, function.
Zero value of a reference type is nil.