Every variable declared without an explicit value in Go is automatically assigned its type's zero value, eliminating undefined behavior found in languages like C.
Go guarantees that every declared variable has a well-defined initial value called the zero value. This design choice eliminates a whole class of bugs common in C/C++ where uninitialized variables hold garbage memory values.
int, float64, byte, rune → 0
bool → false
string → "" (empty string)
pointer, slice, map, channel, function, interface → nil
struct → each field gets its own zero value recursively
Practical implication: you can safely use a struct before setting any field. A nil slice has len 0 and can be appended to. However, a nil map will panic on write — always initialize maps with make() before inserting keys.