Go - Zero Values
Each type in Go has a default value known as the zero value.
Basic Types
If a variable is declared but not initialized it takes on its zero value.
go
// Numeric types (Zero value: 0).
var n1 int // 0
var n2 float32 // 0
var n3 float64 // 0
var n4 byte // 0 (alias for uint8)
var n5 rune // 0 (alias for int32)
// Booleans.
var b bool // false
// Strings.
var s string // "" (empty string)
Reference Types
The zero value is nil
for slices, maps, pointers, functions, channels and interfaces:
go
// Slices.
var s []int // nil
// Maps.
var m map[string]int // nil
// Pointers.
var p1 *int // nil
var p2 *float64 // nil
// Functions.
var f func() // nil
// Channels.
var c chan int // nil
// Interfaces.
var i1 interface{} // nil
var i2 any // nil (any is an alias for interface{}, added in Go v1.18)
type I interface {
M()
}
var i3 I // nil
Struct Type
The zero value for a struct
type is a struct value with all the fields set to their zero values:
go
type Person struct {
Name string
Age int
}
var p Person // Person{Name: "", Age: 0}
p.Name // "" (empty string)
p.Age // 0