Переменные и типы без паники
В Go строгая типизация - это не наказание, а помощь. Компилятор следит за типами и не даст выстрелить себе в ногу.
Объявление переменных
В Go есть несколько способов объявить переменную:
Полная форма
var name string = "Иван"
var age int = 25
var isStudent bool = true
Без указания значения (нулевые значения)
var name string // ""
var age int // 0
var isStudent bool // false
Короткое объявление
Самый популярный способ - с помощью :=
name := "Иван" // string
age := 25 // int
price := 99.99 // float64
isStudent := true // bool
Базовые типы
<ComparisonTable data={{ headers: ["Тип", "Описание", "Пример"], rows: [ ["int", "Целое число", "42"], ["float64", "Число с плавающей точкой", "3.14"], ["string", "Строка", '"Hello"'], ["bool", "Булев тип", "true/false"], ["byte", "Алиас для uint8 (один байт)", "65 ('A')"], ["rune", "Алиас для int32 (один Unicode-символ)", "'А', '😀'"] ] }} />
Константы
Константы объявляются через const и не могут быть изменены:
const pi = 3.14159
const (
StatusOK = 200
StatusError = 500
)
Преобразование типов
Go не делает автоматических преобразований:
var x int = 10
var y float64 = float64(x) // Явное преобразование
// Это НЕ сработает:
// var z float64 = x // Ошибка компиляции!
Множественное присваивание
Go позволяет объявлять несколько переменных одновременно:
var x, y int = 10, 20
name, age := "Алексей", 30
// Обмен значениями
a, b := 5, 10
a, b = b, a // Теперь a=10, b=5
Практический пример
fmt.Printf выводит отформатированную строку. Основные глаголы форматирования:
%s- строка,%d- целое число,%.2f- дробное с 2 знаками после запятой,%T- тип переменной,\n- перевод строки
package main
import "fmt"
func main() {
// Разные способы объявления
var fullName string = "Иван Петров"
age := 25
const taxRate = 0.13
// Вычисления
salary := 100000.0
tax := salary * taxRate
netSalary := salary - tax
fmt.Printf("%s, %d лет\n", fullName, age)
fmt.Printf("Зарплата: %.2f\n", salary)
fmt.Printf("После налогов: %.2f\n", netSalary)
fmt.Printf("Тип salary: %T\n", salary) // выведет: float64
}
Частые ошибки
-
Неиспользованные переменные
func main() { x := 10 // Ошибка: x declared but not used } -
Переопределение в том же блоке
x := 10 x := 20 // Ошибка: no new variables on left side -
Неправильный тип
var count int = "5" // Ошибка: cannot use "5" as int
Итоги
- Используйте
:=для краткого объявления - Помните о строгой типизации
- Константы для неизменяемых значений
- Явное преобразование типов
В следующем уроке изучим условные конструкции и логику принятия решений!
Типичная ошибка
Пытаться «переобъявить» переменную через := в том же скоупе. Если переменная уже есть - используй =.