Go में वेरिएबल और डेटा प्रकार
Что это и зачем?
Представь, что ты играешь в компьютерную игру и хочешь запомнить, сколько у тебя жизней. Ты берёшь листочек, пишешь на нём «жизни = 3» и кладёшь в коробку. Потом, когда монстр тебя ударил, ты открываешь коробку, смотришь на листочек, вычитаешь 1 и пишешь «жизни = 2». Вот эта коробка с листочком — и есть переменная в программировании. Она хранит какое-то значение (число, текст или что-то ещё) и позволяет его менять.
А тип данных — это как подпись на коробке: «тут только числа», «тут только слова», «тут только правда/ложь». Если ты попытаешься положить слово «привет» в коробку для чисел, программа скажет: «Эй, так нельзя!» — и сломается. Типы данных нужны, чтобы компьютер знал, как обращаться с информацией: числа можно складывать, слова — соединять, а правду/ложь — проверять.
В Go (языке программирования от Google) переменные и типы данных — это основа. Без них ты не напишешь ни одну программу. Даже простой калькулятор или игру «Угадай число» — везде нужны переменные. Поэтому давай разберёмся, как это работает.
Синтаксис и примеры кода
В Go переменные объявляются двумя способами: коротким (для быстрого кода) и полным (когда нужно указать тип). Смотри примеры.
// Пример 1: Короткое объявление (только для новых переменных)
package main
import "fmt"
func main() {
// Создаём переменную "age" (возраст) и сразу даём ей значение 12
age := 12
// Выводим на экран
fmt.Println("Мой возраст:", age)
// Меняем значение
age = 13
fmt.Println("Теперь мне:", age)
}
Комментарий: := — это как волшебная палочка. Она создаёт переменную и сама догадывается, какой у неё тип (в данном случае число). fmt.Println — команда «напечатай». Обрати внимание: после age = 13 мы не пишем :=, потому что переменная уже существует.
// Пример 2: Полное объявление с типом
package main
import "fmt"
func main() {
// Говорим: "Создай переменную name типа string (строка) со значением "Аня""
var name string = "Аня"
fmt.Println("Привет,", name)
// Можно объявить без значения (тогда будет пустая строка)
var nickname string
nickname = "СуперКодер"
fmt.Println("Твой ник:", nickname)
}
Комментарий: var — ключевое слово «переменная». После него идёт имя, потом тип (string — текст), потом значение. Если не дать значение, Go сам подставит «пустышку»: для чисел — 0, для строк — "" (пустая строка).
// Пример 3: Разные типы данных
package main
import "fmt"
func main() {
// Числа: целые (int) и дробные (float64)
var apples int = 10 // целое число
var price float64 = 2.5 // дробное число (с запятой)
// Строка (текст)
var greeting string = "Привет, мир!"
// Булево (правда/ложь)
var isHappy bool = true // true = правда, false = ложь
fmt.Println("Яблок:", apples)
fmt.Println("Цена за кг:", price)
fmt.Println("Сообщение:", greeting)
fmt.Println("Счастлив?", isHappy)
}
Комментарий: int — целые числа (1, 100, -5). float64 — числа с точкой (3.14, 0.5). string — текст в кавычках. bool — только true или false. Если перепутать типы, Go заругается.
// Пример 4: Много переменных сразу
package main
import "fmt"
func main() {
// Можно объявить несколько переменных одного типа в одну строку
var x, y int = 5, 10
fmt.Println("x + y =", x + y)
// Или разные типы (но так редко делают)
var (
name string = "Вася"
age int = 15
)
fmt.Println(name, age)
}
Комментарий: Если нужно много переменных, можно сгруппировать их в блок var (...). Это удобно и читается легче.
// Пример 5: Ошибка при смене типа
package main
import "fmt"
func main() {
var score int = 100
// score = "сто" // ОШИБКА! Нельзя число заменить на строку
fmt.Println("Очки:", score)
// Правильно: только число
score = 200
fmt.Println("Новые очки:", score)
}
Комментарий: Если раскомментировать строку score = "сто", программа не запустится. Go строгий: раз объявил int, значит, только числа.
Сравнение с Python
Python — это как младший брат Go: он проще и делает многое за тебя. Но у Go есть свои фишки. Смотри таблицу:
| Действие | Go | Python |
|---|---|---|
| Создать переменную | age := 12 или var age int = 12 | age = 12 |
| Указать тип | Нужно (явно или неявно) | Не нужно (тип сам определяется) |
| Сменить тип | Нельзя (ошибка) | Можно (но это плохая практика) |
| Пустая переменная | Автоматически 0, "", false | Ошибка (нужно присвоить) |
Пример на Python (как бы это выглядело):
# Python: тип не указываем
age = 12
name = "Аня"
price = 2.5
is_happy = True
# Можно даже так (но лучше не надо)
age = "двенадцать" # Python разрешит, но это путаница
В Go ты всегда знаешь, какой тип у переменной. Это помогает не допускать глупых ошибок. Python гибче, но из-за этого новички часто путаются: «У меня число или строка?».
Типичные ошибки новичков
- Забыл := или var
age = 12— ошибка! Нужноage := 12илиvar age int = 12. Go не любит, когда переменная появляется из ниоткуда. - Перепутал кавычки
В Go строки только в двойных кавычках:"привет". Одинарные ('привет') — это для символов, и они редко используются. Ошибка:name := 'Аня'. - Пытаешься сложить число и строку
fmt.Println(10 + "яблок")— ошибка! Нельзя смешивать типы. Сначала преврати число в строку:fmt.Println(strconv.Itoa(10) + " яблок")(это сложно, но потом выучишь). - Используешь неиспользуемую переменную
Если объявил переменную, но нигде её не использовал, Go выдаст ошибку. Например:var x int = 5и забыл про неё — программа не запустится. Это бесит новичков, но учит писать чистый код. - Думаешь, что := можно везде
:=работает только внутри функций. Если написатьage := 12внеfunc main(), будет ошибка. Там нужноvar age int = 12.
Итог
Переменные — это коробки для хранения данных, а типы данных — правила, что можно класть в каждую коробку. В Go правила строгие: если коробка для чисел, туда нельзя положить текст. Это кажется сложным, но на самом деле спасает от кучи ошибок. Python проще, но Go надёжнее.
Запомни главное:
:=— для быстрого создания переменной (только внутри функций).var— для полного контроля (можно везде).- Типы:
int(целые числа),float64(дробные),string(текст),bool(правда/ложь). - Нельзя менять тип переменной после создания.
- Каждая переменная должна быть использована.
Попробуй написать свою первую программу: создай переменные с именем, возрастом и любимым числом, а потом выведи их на экран. Если получится — ты уже на пути к тому, чтобы стать настоящим программистом!