🐹 Go

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 есть свои фишки. Смотри таблицу:

ДействиеGoPython
Создать переменнуюage := 12 или var age int = 12age = 12
Указать типНужно (явно или неявно)Не нужно (тип сам определяется)
Сменить типНельзя (ошибка)Можно (но это плохая практика)
Пустая переменнаяАвтоматически 0, "", falseОшибка (нужно присвоить)

Пример на Python (как бы это выглядело):

# Python: тип не указываем
age = 12
name = "Аня"
price = 2.5
is_happy = True

# Можно даже так (но лучше не надо)
age = "двенадцать"  # Python разрешит, но это путаница

В Go ты всегда знаешь, какой тип у переменной. Это помогает не допускать глупых ошибок. Python гибче, но из-за этого новички часто путаются: «У меня число или строка?».

Типичные ошибки новичков

  1. Забыл := или var
    age = 12 — ошибка! Нужно age := 12 или var age int = 12. Go не любит, когда переменная появляется из ниоткуда.
  2. Перепутал кавычки
    В Go строки только в двойных кавычках: "привет". Одинарные ('привет') — это для символов, и они редко используются. Ошибка: name := 'Аня'.
  3. Пытаешься сложить число и строку
    fmt.Println(10 + "яблок") — ошибка! Нельзя смешивать типы. Сначала преврати число в строку: fmt.Println(strconv.Itoa(10) + " яблок") (это сложно, но потом выучишь).
  4. Используешь неиспользуемую переменную
    Если объявил переменную, но нигде её не использовал, Go выдаст ошибку. Например: var x int = 5 и забыл про неё — программа не запустится. Это бесит новичков, но учит писать чистый код.
  5. Думаешь, что := можно везде
    := работает только внутри функций. Если написать age := 12 вне func main(), будет ошибка. Там нужно var age int = 12.

Итог

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

Запомни главное:

  • := — для быстрого создания переменной (только внутри функций).
  • var — для полного контроля (можно везде).
  • Типы: int (целые числа), float64 (дробные), string (текст), bool (правда/ложь).
  • Нельзя менять тип переменной после создания.
  • Каждая переменная должна быть использована.

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