🐹 Go

पहला प्रोग्राम: Hello World और Go में सिंटैक्स की मूल बातें

Что это и зачем?

Представь, что ты учишься готовить. Первое блюдо, которое ты попробуешь — это, скорее всего, просто яичница или бутерброд. Ты не начинаешь сразу с торта «Наполеон» или сложного супа. Точно так же и в программировании: есть своё «первое блюдо» — программа, которая просто выводит на экран слова «Hello, World!» (Привет, мир!).

Зачем это нужно? Во-первых, чтобы проверить, что твой «инструмент» (компьютер, редактор кода) работает правильно. Во-вторых, чтобы понять самую основу: как написать команду, как её запустить и увидеть результат. Это как впервые нажать на выключатель и увидеть свет — ты понимаешь, что электричество есть и лампочка работает.

Go (или Го) — это язык программирования, который создали в компании Google. Его придумали, чтобы программистам было проще писать быстрые и надёжные программы. Он строгий, но справедливый: если ты сделаешь ошибку, он тебе об этом сразу скажет. И первая программа на Go — это твой пропуск в мир кода.

Синтаксис и примеры кода

Синтаксис — это правила написания кода, как правила русского языка: где ставить точку, а где запятую. В Go эти правила очень чёткие. Давай посмотрим на первый пример.

Пример 1: Классический Hello World

package main  // Говорим, что это главная программа

import "fmt"  // Подключаем библиотеку для вывода текста

func main() {  // Объявляем главную функцию (главное действие)
    fmt.Println("Hello, World!")  // Команда: напечатай "Hello, World!"
}

Разбор по строчкам:

  • package main — каждая программа на Go начинается с указания «пакета». Пакет main — это особый пакет, который говорит: «Я — главная программа, меня можно запустить».
  • import "fmt" — мы подключаем готовый набор инструментов (библиотеку) под названием fmt. В ней есть полезные функции, например, Println — печать строки с переводом на новую строку.
  • func main() { ... } — это главная функция. Внутри фигурных скобок {} пишется то, что программа будет делать. Всё, что внутри, выполняется по порядку.
  • fmt.Println("Hello, World!") — команда вывести текст. fmt — это имя библиотеки, точка — разделитель, Println — имя команды. В скобках — то, что нужно напечатать, в кавычках.

Пример 2: Приветствие по имени

package main

import "fmt"

func main() {
    var name string  // Объявляем переменную (контейнер) для текста
    name = "Аня"     // Кладём в контейнер значение "Аня"
    fmt.Println("Привет,", name)  // Печатаем: "Привет, Аня"
}

Что нового:

  • var name string — мы создаём переменную с именем name и типом string (строка, то есть текст). Переменная — это как коробка, в которую можно положить значение.
  • name = "Аня" — кладём в коробку значение "Аня".
  • fmt.Println("Привет,", name) — печатаем два значения: текст "Привет," и содержимое переменной name. Запятая разделяет их.

Пример 3: Сложение чисел

package main

import "fmt"

func main() {
    var a int  // Переменная для целого числа
    var b int  // Ещё одна переменная для числа
    a = 5
    b = 3
    var sum int = a + b  // Складываем и сохраняем результат
    fmt.Println("Сумма:", sum)  // Печатаем: "Сумма: 8"
}

Что нового:

  • int — тип для целых чисел (integer).
  • a + b — операция сложения. Результат сохраняется в переменную sum.
  • Можно объявить переменную и сразу дать ей значение: var sum int = a + b.

Пример 4: Ввод данных от пользователя

package main

import "fmt"

func main() {
    var name string
    fmt.Print("Введите своё имя: ")  // Печатаем без перевода строки
    fmt.Scan(&name)  // Ждём, пока пользователь введёт текст
    fmt.Println("Привет,", name)  // Печатаем приветствие
}

Что нового:

  • fmt.Print — печатает текст без перевода на новую строку (в отличие от Println).
  • fmt.Scan(&name) — команда для чтения ввода с клавиатуры. Знак & означает «возьми адрес переменной» — это нужно, чтобы функция могла изменить значение name. Пока просто запомни: если хочешь получить ввод от пользователя, пиши & перед именем переменной.

Пример 5: Условный оператор (если-то)

package main

import "fmt"

func main() {
    var age int = 16
    if age >= 18 {  // Если age больше или равно 18
        fmt.Println("Ты взрослый")
    } else {  // Иначе
        fmt.Println("Ты ещё ребёнок")
    }
}

Что нового:

  • if — условие. Если выражение в скобках истинно (правда), выполняется код внутри первых фигурных скобок.
  • else — иначе. Если условие ложно, выполняется код после else.
  • >= — оператор «больше или равно».

Сравнение с Python

Python — ещё один популярный язык для начинающих. Давай посмотрим, как те же примеры выглядят на Python.

Действие Go Python
Вывести текст fmt.Println("Привет") print("Привет")
Создать переменную var name string = "Аня" name = "Аня"
Сложить числа var sum int = 5 + 3 sum = 5 + 3
Ввести данные fmt.Scan(&name) name = input()
Условие if age >= 18 { ... } else { ... } if age >= 18: ... else: ...

Главные отличия:

  • Фигурные скобки — в Go блоки кода обозначаются {}, а в Python — отступами (пробелами). В Go ты всегда видишь, где начинается и заканчивается блок.
  • Типы переменных — в Go нужно указывать тип (string, int), а в Python — нет. Python сам догадывается, что ты имел в виду. Go строже: если ты сказал, что переменная — число, ты не сможешь положить в неё текст.
  • Точка с запятой — в Go точка с запятой не обязательна (её ставят автоматически), в Python её вообще нет.
  • Библиотеки — в Go нужно явно подключать import "fmt", в Python многие функции (например, print) доступны сразу.

Python проще для начала, но Go учит порядку и дисциплине. Если ты освоишь Go, другие языки покажутся тебе лёгкими.

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

Вот что чаще всего идёт не так у тех, кто пишет на Go впервые.

Ошибка 1: Забыл кавычки

fmt.Println(Привет)  // Ошибка! Go думает, что "Привет" — это переменная

Как исправить: Текст всегда в двойных кавычках: "Привет".

Ошибка 2: Неправильные скобки

func main()  // Забыл открывающую фигурную скобку
    fmt.Println("Привет")
}

Как исправить: После func main() обязательно ставь { на той же строке или на следующей. Go требует, чтобы открывающая скобка была на той же строке, что и объявление функции.

Ошибка 3: Переменная объявлена, но не используется

var x int = 10
fmt.Println("Привет")  // Ошибка: переменная x объявлена, но не используется

Как исправить: Go не прощает «мёртвых» переменных. Если объявил — используй. Или удали объявление.

Ошибка 4: Забыл импортировать fmt

package main

func main() {
    fmt.Println("Привет")  // Ошибка: undefined: fmt
}

Как исправить: Добавь import "fmt" после package main.

Ошибка 5: Неправильный тип

var name string = 123  // Ошибка: нельзя число положить в строку

Как исправить: