पहला प्रोग्राम: 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 // Ошибка: нельзя число положить в строку
Как исправить: