В чем разница между объявлением переменной через var и через присваивание

«В чем разница между объявлением переменной через var и через присваивание» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

// var объявляет переменную с указанием типа (можно без инициализации)
var x int = 10
var y string // y == ""

// := (короткое объявление) определяет тип автоматически и требует инициализации
z := 20      // int
name := "Bob" // string

// Ключевые отличия:
// 1. var можно использовать на уровне пакета, := только внутри функций
// 2. var позволяет объявить без инициализации, := требует сразу присвоить значение
// 3. var явно указывает тип, := выводит его автоматически
// 4. var можно переобъявить (с тем же типом), := нельзя в той же области видимости