Go Курс

Переменные и типы данных в Go

Самоучитель Python 3, собранный из материалов данного сайта.Предназначен в основном для тех, кто хочет изучить язык программирования Python с нуля.

Урок 2: Переменные в Go — как коробки для хранения данных

Введение: Зачем нужны переменные?

Представь, что ты играешь в компьютерную игру. У твоего персонажа есть имя, количество жизней, уровень и количество монет. Все эти данные нужно где-то хранить, чтобы игра могла их использовать. Именно для этого и нужны переменные!

Переменная — это как коробка с наклейкой. На коробке написано её имя (например, "жизни"), а внутри лежит значение (например, 100). Ты можешь заглянуть в коробку, чтобы узнать, сколько жизней осталось, или положить туда новое значение.

В Go переменные строгие — это значит, что если ты создал коробку для чисел, то в неё нельзя положить текст. Это помогает избежать ошибок.

1. Первая программа с переменными

Давай сразу напишем программу, которая использует переменные, и разберём её по кусочкам.

package main

import "fmt"

func main() {
    // Создаём переменную с именем "name" и значением "Алиса"
    var name string = "Алиса"
    
    // Создаём переменную с именем "age" и значением 12
    var age int = 12
    
    // Выводим приветствие
    fmt.Println("Привет, меня зовут", name)
    fmt.Println("Мне", age, "лет")
}

Разбор кода:

  • var — ключевое слово, которое говорит Go: "Я хочу создать новую переменную".
  • name и age — это имена переменных. Придумывай их так, чтобы было понятно, что они хранят.
  • string и int — это типы данных. string для текста, int для целых чисел.
  • = — оператор присваивания. Он кладёт значение в коробку.
  • "Алиса" и 12 — это значения, которые мы сохраняем.

Когда программа запустится, она выведет:

Привет, меня зовут Алиса
Мне 12 лет

2. Типы данных в Go: какие бывают коробки

В Go есть несколько основных типов коробок. Давай познакомимся с самыми важными:

Тип Что хранит Пример Аналогия
int Целые числа 42, -7, 0 Количество яблок в корзине
float64 Дробные числа 3.14, -0.5 Температура на градуснике
string Текст "Привет", "Go" Имя твоего питомца
bool Истина/Ложь true, false Ответ на вопрос "Идёт ли дождь?"

Важно! В Go нельзя хранить текст в числовой переменной. Если ты попробуешь написать var age int = "двенадцать", компилятор выдаст ошибку.

3. Как создавать переменные: 3 способа

Go даёт нам несколько способов создать переменную. Все они правильные, просто выбирай тот, который удобнее.

Способ 1: Полное объявление

Ты указываешь var, имя, тип и значение:

var score int = 100
var playerName string = "Игрок1"
var isGameOver bool = false

Способ 2: Без указания типа (вывод типа)

Go сам догадается, какой тип нужен, по значению:

var score = 100        // Go поймёт, что это int
var playerName = "Игрок1"  // Go поймёт, что это string
var isGameOver = false     // Go поймёт, что это bool

Способ 3: Короткая запись (только внутри функции)

Самый популярный способ среди программистов Go. Используй :=:

score := 100
playerName := "Игрок1"
isGameOver := false

Обрати внимание! Способ 3 работает только внутри функций (например, внутри main). Если ты пишешь код вне функции, используй var.

4. Как менять значения переменных

Переменные называются "переменными", потому что их можно изменять. Представь, что у тебя есть коробка "счёт", и ты хочешь увеличить его на 10 очков.

package main

import "fmt"

func main() {
    score := 0           // Начинаем с 0 очков
    fmt.Println("Счёт:", score)
    
    score = 10           // Получили 10 очков
    fmt.Println("Счёт теперь:", score)
    
    score = score + 5    // Добавили ещё 5
    fmt.Println("Финальный счёт:", score)
}

Важное правило: Когда ты меняешь значение, не пиши var или := снова. Просто используй =.

Есть специальные короткие записи для изменения чисел:

x := 10
x += 5   // То же самое, что x = x + 5, теперь x = 15
x -= 3   // x = x - 3, теперь x = 12
x *= 2   // x = x * 2, теперь x = 24
x /= 4   // x = x / 4, теперь x = 6

5. Имена переменных: правила и хороший стиль

В Go есть строгие правила, как называть переменные. Давай разберём их на примерах:

  • Можно: буквы (a-z, A-Z), цифры (0-9) и символ подчёркивания (_). Имя не может начинаться с цифры.
  • Нельзя: пробелы, дефисы, специальные символы (@#!$%^&*).
  • Регистр важен: name и Name — это разные переменные.

Хорошие примеры имён:

playerHealth := 100
enemyCount := 5
isGameRunning := true
userName := "Мария"

Плохие примеры имён:

a := 100           // Непонятно, что это
x1 := 5            // Тоже непонятно
myVariable := 10   // Слишком общее имя
total_amount := 50 // Лучше: totalAmount (camelCase)

Совет: В Go принято использовать camelCase — первое слово с маленькой буквы, каждое следующее с большой. Например: playerName, totalScore, isGameOver.

6. Пример с игрой: создаём персонажа

Давай напишем программу, которая создаёт персонажа для игры и показывает его характеристики:

package main

import "fmt"

func main() {
    // Создаём персонажа
    heroName := "Артур"
    heroLevel := 1
    heroHealth := 100.0
    heroMana := 50.0
    isAlive := true
    
    // Выводим информацию
    fmt.Println("=== ХАРАКТЕРИСТИКИ ПЕРСОНАЖА ===")
    fmt.Println("Имя:", heroName)
    fmt.Println("Уровень:", heroLevel)
    fmt.Println("Здоровье:", heroHealth)
    fmt.Println("Мана:", heroMana)
    fmt.Println("Жив?", isAlive)
    
    // Персонаж получает урон
    fmt.Println("\nПерсонаж получает 30 урона!")
    heroHealth = heroHealth - 30
    fmt.Println("Теперь здоровья:", heroHealth)
    
    // Персонаж повышает уровень
    fmt.Println("\nПерсонаж повысил уровень!")
    heroLevel = heroLevel + 1
    fmt.Println("Новый уровень:", heroLevel)
}

Запусти эту программу и посмотри, что получится. Обрати внимание, как меняются значения переменных.

7. Константы: переменные, которые нельзя изменить

Иногда бывают значения, которые никогда не должны меняться. Например, число Пи или количество секунд в минуте. Для таких случаев в Go есть константы.

package main

import "fmt"

func main() {
    const pi = 3.14159
    const secondsInMinute = 60
    
    fmt.Println("Число Пи:", pi)
    fmt.Println("Секунд в минуте:", secondsInMinute)
    
    // Если раскомментировать следующую строку, будет ошибка:
    // pi = 3.14  // Нельзя изменить константу!
}

Константы объявляются с ключевым словом const. Их нельзя изменить после объявления — это защищает от случайных ошибок.

8. Множественное объявление переменных

Если нужно создать несколько переменных одного типа, можно сделать это в одной строке:

// Объявляем две строковые переменные
var firstName, lastName string = "Иван", "Петров"

// Объявляем три целых числа
x, y, z := 10, 20, 30

fmt.Println(firstName, lastName)
fmt.Println(x, y, z)

Это удобно, когда переменные логически связаны друг с другом.

9. Что будет, если не задать значение?

В Go каждая переменная имеет нулевое значение по умолчанию. Если ты не присвоишь значение, Go сам даст переменной значение по умолчанию:

var number int        // 0
var text string       // "" (пустая строка)
var flag bool         // false
var price float64     // 0.0

fmt.Println(number)   // Выведет: 0
fmt.Println(text)     // Выведет: (пустую строку)
fmt.Println(flag)     // Выведет: false
fmt.Println(price)    // Выведет: 0

Это полезно, когда ты хочешь сначала создать переменную, а потом присвоить ей значение.

10. Ошибки, которые часто делают новички

Давай разберём типичные ошибки, чтобы ты их избегал:

Ошибка 1: Использование := для уже существующей переменной

x := 10
x := 20  // Ошибка! x уже существует

Правильно: x = 20

Ошибка 2: Несоответствие типов

var age int = "пятнадцать"  // Ошибка! string нельзя присвоить int

Ошибка 3: Имя переменной начинается с цифры

var 1player string = "Игрок"  // Ошибка!

Правильно: player1

Ошибка 4: Использование необъявленной переменной

fmt.Println(score)  // Ошибка! score не объявлена

11. Практические задания

Теперь твоя очередь! Попробуй выполнить эти задания самостоятельно. Если что-то не получается — перечитай урок или попроси помощи.

Задание 1: Калькулятор карманных денег

Напиши программу, которая:

  • Создаёт переменную pocketMoney (карманные деньги) со значением 500
  • Создаёт переменную spent (потрачено) со значением 120
  • Вычисляет, сколько денег осталось
  • Выводит результат в формате: "У тебя осталось X рублей"

Задание 2: Уровень персонажа

Создай программу для игры:

  • Создай переменные: playerName (твоё имя), level (начни с 1), experience (начни с 0)
  • Добавь 150 опыта (experience = experience + 150)
  • Если опыта стало больше 100, повысь уровень на 1 и вычти 100 опыта
  • Выведи все характеристики

Задание 3: Конвертер температуры

Напиши программу, которая:

  • Создаёт переменную celsius (температура в Цельсиях) со значением 25
  • Переводит её в Фаренгейты по формуле: F = C * 9/5 + 32
  • Создаёт константу freezingPoint (точка замерзания воды по Фаренгейту = 32)
  • Выводит результат: "25°C = 77°F" и "Точка замерзания: 32°F"

Совет: После каждого задания запускай программу и проверяй результат. Если программа выдаёт ошибку — прочитай сообщение об ошибке, оно часто подсказывает, что не так.

Заключение

Поздравляю! Ты изучил основы работы с переменными в Go. Теперь ты знаешь:

  • Что такое переменные и зачем они нужны
  • Основные типы данных: int, float64, string, bool
  • Три способа создания переменных
  • Как изменять значения переменных
  • Правила именования переменных
  • Что такое константы

В следующем уроке мы научимся принимать данные от пользователя и делать программы, которые общаются с человеком. А пока — тренируйся на заданиях!

Помни: Программирование — это как спорт. Чем больше практикуешься, тем лучше получается. Не бойся ошибаться — ошибки помогают учиться.