Перейти к основному содержимому

Практика: Основы синтаксиса Go


Онлайн редактор кода для Go

Здесь вы можете попробовать свои силы в программировании на языке Go. Для этого мы предоставляем вам онлайн редактор кода, в котором вы можете написать свой код и запустить его.


❗️ При обновлении страницы код пропадёт, по этому, сохраните свой код куда-нибудь, если он важный.

Задание 1 — Карточка гаджета

Практическое задание №1: Основы Go

⏱️ Примерное время: 15-20 минут

Создайте карточку товара с помощью короткого объявления переменных.


Требования:

  • используйте короткое объявление :=
  • посчитайте общую стоимость (цена × количество)
  • выведите одной строкой через fmt.Printf

Пример желаемого вывода:
Планшет Xiaomi Pad 7 — 39990.00 ₽ × 11 = 439890.00 ₽

💡 Подсказка
total := price * float64(count)
fmt.Printf("%s — %.2f ₽ × %d = %.2f ₽\n", name, price, count, total)

Задание 2 — Сообщение о заказе

Практическое задание №2: Строки и strings.Builder

⏱️ Примерное время: 15-20 минут

Соберите сообщение о заказе через strings.Builder.


Требования:

  • используйте strings.Builder
  • преобразуйте числа через strconv.Itoa и strconv.FormatFloat
  • желаемый формат:
    Заказ №1345 | 12490.00 ₽ | оплачен: да
💡 Подсказка
var builder strings.Builder
builder.WriteString("Заказ №")
builder.WriteString(strconv.Itoa(id))
builder.WriteString(" | ")
builder.WriteString(strconv.FormatFloat(sum, 'f', 2, 64))
builder.WriteString(" ₽ | оплачен: ")
builder.WriteString(status)
fmt.Println(builder.String())

Задание 3 — Байты vs руны

Практическое задание №3: byte, rune и UTF-8

⏱️ Примерное время: 20-25 минут

Исследуйте строку с эмодзи и кириллицей.


Требования:

  • Выведите четыре значения:
    1. Длина в байтах: len(s)
    2. Количество символов: len([]rune(s))
    3. Первый символ (как строка)
    4. Последний символ (как строка)
💡 Подсказка
runes := []rune(text)
fmt.Printf("Байт: %d, символов: %d\n", len(text), len(runes))
fmt.Println("Первый:", string(runes[0]))
fmt.Println("Последний:", string(runes[len(runes)-1]))

Задание 4 — Цена после скидки

Практическое задание №4: Арифметика и преобразования типов

⏱️ Примерное время: 15-20 минут

Посчитайте цену со скидкой и округлите вниз до целых рублей.


Требования:

  • преобразуйте цену в float64
  • посчитайте итоговую цену
  • преобразуйте результат в int (отбрасывание дробной части)
  • выведите в формате: Было 24990 ₽ → стало 19992 ₽
💡 Подсказка
discounted := price * (1 - discountPercent/100)
finalPrice := int(discounted)
fmt.Printf("Было %d ₽ → стало %d ₽\n", price, finalPrice)

Задание 5 — Бонусный счёт (указатели прямо в main)

Практическое задание №5: Указатели

⏱️ Примерное время: 20-25 минут

Изменяйте баланс бонусов через указатель.


Требования:

  • создайте переменную balance с начальным значением
  • создайте указатель p := &balance
  • начислите бонусы через *p += …
  • выведите баланс после начисления
  • обнулите через *p = 0
  • выведите финальный баланс

Пример желаемого вывода:
Баланс: 500
После начисления: 800
После обнуления: 0

Задание 6 — Дописываем текст через указатель

Практическое задание №6: Указатель на строку

⏱️ Примерное время: 15-20 минут

Измените строку через указатель.


Требования:

  • создайте строку s с начальным значением
  • создайте указатель ps := &s
  • добавьте текст через *ps += …
  • выведите строку до и после изменения

Пример желаемого вывода:
До: Go
После: Go — мой любимый язык

Задание 7 — Отчёт о транзакции

Практическое задание №7: strings.Builder + strconv

⏱️ Примерное время: 20-25 минут

Соберите красивый отчёт через strings.Builder.


Требования:

  • используйте strings.Builder
  • преобразуйте числа через strconv.Itoa и strconv.FormatFloat
  • желаемый формат:
    Транзакция #1427 • 6 товаров • 58990.50 ₽
💡 Подсказка
var b strings.Builder
b.WriteString("Транзакция #")
b.WriteString(strconv.Itoa(id))
b.WriteString(" • ")
b.WriteString(strconv.Itoa(items))
b.WriteString(" товаров • ")
b.WriteString(strconv.FormatFloat(total, 'f', 2, 64))
b.WriteString(" ₽")
fmt.Println(b.String())

Задание 8 — Цена с НДС

Практическое задание №8: Константы и арифметика

⏱️ Примерное время: 10-15 минут

Посчитайте цену с учётом НДС.


Требования:

  • объявите константу TaxRate
  • посчитайте цену с НДС: price * (1 + TaxRate)
  • выведите обе цены с двумя знаками после запятой через fmt.Printf

Пример желаемого вывода:
Без НДС: 30000.00 ₽ → С НДС: 36000.00 ₽

Задание 9 — Итоговое: Товар + скидка + отчёт

Практическое задание №9: Итоговое (всё вместе)

⏱️ Примерное время: 25-35 минут

Объедините переменные, указатели, строки и Builder.


Требования:

  • переменные через :=
  • создайте указатель на цену p := &price
  • примените скидку 15%: *p *= 0.85
  • посчитайте общую сумму
  • соберите отчёт через strings.Builder

Пример желаемого вывода:
Курс Go 2026 • после -15%: 25491.50 ₽ • всего за 20 шт: 509830.00 ₽

💡 Подсказка
var b strings.Builder
b.WriteString(name)
b.WriteString(" • после -15%: ")
b.WriteString(strconv.FormatFloat(*p, 'f', 2, 64))
b.WriteString(" ₽ • всего за ")
b.WriteString(strconv.Itoa(count))
b.WriteString(" шт: ")
b.WriteString(strconv.FormatFloat(*p * float64(count), 'f', 2, 64))
b.WriteString(" ₽")
fmt.Println(b.String())
подсказка

Ошибки компиляции — ваши лучшие учителя. Читайте их внимательно!