Переменные и типы без паники

В Go строгая типизация - это не наказание, а помощь. Компилятор следит за типами и не даст выстрелить себе в ногу.

Объявление переменных

В Go есть несколько способов объявить переменную:

Полная форма

var name string = "Иван"
var age int = 25
var isStudent bool = true

Без указания значения (нулевые значения)

var name string    // ""
var age int        // 0
var isStudent bool // false
В Go каждый тип имеет нулевое значение: - Числа: 0 - Строки: "" - Булевы: false - Указатели: nil

Короткое объявление

Самый популярный способ - с помощью :=

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 требует явного преобразования типов. Это защищает от неожиданной потери данных.

Множественное присваивание

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
}

Частые ошибки

  1. Неиспользованные переменные

    func main() {
        x := 10  // Ошибка: x declared but not used
    }
    
  2. Переопределение в том же блоке

    x := 10
    x := 20  // Ошибка: no new variables on left side
    
  3. Неправильный тип

    var count int = "5"  // Ошибка: cannot use "5" as int
    

Итоги

  • Используйте := для краткого объявления
  • Помните о строгой типизации
  • Константы для неизменяемых значений
  • Явное преобразование типов

В следующем уроке изучим условные конструкции и логику принятия решений!

Типичная ошибка

Пытаться «переобъявить» переменную через := в том же скоупе. Если переменная уже есть - используй =.

Зарегистрируйтесь бесплатно, чтобы пройти квиз, решить задание с автопроверкой и вести прогресс.