[ ДВА СПОСОБА ОБЪЯВИТЬ ПЕРЕМЕННУЮ ]
В Go есть два способа создать переменную: явное объявление через var (с указанием типа) и краткое объявление через := (тип выводится автоматически).
// Способ 1: var с типом
var age int = 17
var name string = "Марк"
// Способ 2: короткое объявление :=
score := 100
active := true
// var без значения — нулевое значение
var hp int // hp = 0
var title string // title = ""
Краткое объявление
:= работает только внутри функций. На уровне пакета (вне функций) нужно использовать var.
[ ОСНОВНЫЕ ТИПЫ ДАННЫХ ]
Go — статически типизированный язык. Каждая переменная имеет строго определённый тип, который нельзя изменить после объявления.
[ НУЛЕВЫЕ ЗНАЧЕНИЯ ]
Важная особенность Go: переменные всегда инициализированы. Если ты объявляешь переменную без значения, Go автоматически присвоит ей нулевое значение для её типа.
package main
import "fmt"
func main() {
var i int
var f float64
var s string
var b bool
fmt.Println(i) // 0
fmt.Println(f) // 0
fmt.Println(s) // "" (пустая строка)
fmt.Println(b) // false
}
Нулевые значения — защита от ошибок типа
undefined или null, распространённых в других языках. В Go переменная всегда имеет корректное значение.
[ КОНСТАНТЫ ]
Ключевое слово const объявляет неизменяемые значения. Особенность Go — специальный счётчик iota для создания перечислений: он автоматически увеличивается в каждой строке блока const.
const Pi = 3.14159
const (
StatusOK = 200
StatusNotFound = 404
)
// iota — автоматический счётчик
const (
Sunday = iota // 0
Monday // 1
Tuesday // 2
)
[ ПОПРОБУЙ САМ ]
Объяви переменные для игрового персонажа:
— имя (string)
— здоровье (int)
— уровень (int)
— активен ли (bool)
Выведи их, а потом объяви такие же переменные без инициализации и выведи их нулевые значения.
[ ПОКАЗАТЬ РЕШЕНИЕ ]
package main
import "fmt"
func main() {
name := "Герой"
hp := 100
level := 1
active := true
fmt.Println(name, hp, level, active)
// Нулевые значения
var emptyName string
var emptyHp int
var emptyActive bool
fmt.Println(emptyName, emptyHp, emptyActive)
// "" 0 false
}