Урок 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 - Три способа создания переменных
- Как изменять значения переменных
- Правила именования переменных
- Что такое константы
В следующем уроке мы научимся принимать данные от пользователя и делать программы, которые общаются с человеком. А пока — тренируйся на заданиях!
Помни: Программирование — это как спорт. Чем больше практикуешься, тем лучше получается. Не бойся ошибаться — ошибки помогают учиться.