Go में अंकगणितीय संक्रियाएँ
Что это и зачем?
Представь, что ты — кассир в магазине. К тебе приходят покупатели, и тебе нужно быстро посчитать сдачу: сколько стоит товар, сколько денег дал покупатель, сколько нужно вернуть. Или, например, ты печёшь пирожки по рецепту, где написано "возьми 2 яйца и 3 стакана муки", а тебе нужно испечь в 4 раза больше — придётся умножать. Всё это — арифметические операции: сложение, вычитание, умножение и деление.
В программировании (и в языке Go) они работают точно так же, как в математике или в жизни. Компьютер — это тот же кассир, только очень быстрый. Он умеет складывать, вычитать, умножать и делить числа за доли секунды. Без этого не обойтись: хочешь сделать игру — нужно считать очки, хочешь написать калькулятор — нужно складывать, хочешь обработать данные — снова арифметика. Это база, с которой начинается любой код.
Синтаксис и примеры кода
В Go арифметика выглядит очень похоже на обычную математику. Вот основные знаки:
+— сложение-— вычитание*— умножение (звёздочка, а не крестик)/— деление (слеш)%— остаток от деления (например, 7 % 3 = 1, потому что 7 делится на 3 только один раз, и остаётся 1)
Смотри примеры. Код пишется внутри функции main.
package main
import "fmt"
func main() {
// Пример 1: Сложение — как посчитать, сколько у тебя всего яблок
applesMasha := 5 // у Маши 5 яблок
applesPetya := 3 // у Пети 3 яблока
totalApples := applesMasha + applesPetya // складываем
fmt.Println("Всего яблок:", totalApples) // напечатает: Всего яблок: 8
}
package main
import "fmt"
func main() {
// Пример 2: Вычитание — сколько останется денег, если купить пиццу
money := 1000 // у тебя 1000 рублей
pizzaPrice := 450 // пицца стоит 450
change := money - pizzaPrice // вычитаем
fmt.Println("Сдача:", change) // напечатает: Сдача: 550
}
package main
import "fmt"
func main() {
// Пример 3: Умножение — сколько всего печенек в 4 пачках
cookiesPerPack := 8 // в одной пачке 8 печенек
packs := 4 // у тебя 4 пачки
totalCookies := cookiesPerPack * packs // умножаем
fmt.Println("Всего печенек:", totalCookies) // напечатает: Всего печенек: 32
}
package main
import "fmt"
func main() {
// Пример 4: Деление — как разделить пиццу на друзей
pizzaSlices := 8 // пицца разрезана на 8 кусков
friends := 4 // 4 друга
slicesPerFriend := pizzaSlices / friends // делим
fmt.Println("Каждому по кусков:", slicesPerFriend) // напечатает: Каждому по кусков: 2
}
package main
import "fmt"
func main() {
// Пример 5: Остаток от деления — сколько кусков останется, если друзей 3
pizzaSlices := 8
friends := 3
slicesPerFriend := pizzaSlices / friends // целых кусков каждому: 2
leftover := pizzaSlices % friends // остаток: 8 % 3 = 2
fmt.Println("Каждому по:", slicesPerFriend, "останется:", leftover)
// напечатает: Каждому по: 2 останется: 2
}
Обрати внимание: в Go, если ты делишь целое число на целое, результат будет целым (дробная часть отбрасывается). Например, 7 / 2 даст 3, а не 3.5. Для дробных чисел нужно использовать тип float64 (но это уже чуть сложнее).
Сравнение с Python
Если ты уже пробовал Python, то заметишь, что арифметика очень похожа. Но есть пара отличий.
В Python деление / всегда даёт дробный результат (например, 7 / 2 = 3.5). А чтобы получить целую часть, нужно писать // (два слеша). В Go наоборот: обычное деление / для целых чисел даёт целую часть, а для дробных — дробную. Остаток от деления в обоих языках — %.
Вот как те же примеры выглядели бы в Python:
# Python
apples_masha = 5
apples_petya = 3
total_apples = apples_masha + apples_petya
print("Всего яблок:", total_apples) # 8
money = 1000
pizza_price = 450
change = money - pizza_price
print("Сдача:", change) # 550
cookies_per_pack = 8
packs = 4
total_cookies = cookies_per_pack * packs
print("Всего печенек:", total_cookies) # 32
pizza_slices = 8
friends = 4
slices_per_friend = pizza_slices / friends # в Python будет 2.0 (дробное)
print("Каждому по кусков:", slices_per_friend) # 2.0
# Остаток
leftover = pizza_slices % friends
print("Останется:", leftover) # 0
Главное отличие: в Python не нужно явно указывать тип переменной (просто пишешь a = 5), а в Go нужно (или использовать короткую запись :=, как в примерах). Но сами операции — те же.
Типичные ошибки новичков
- Забыть про тип данных. Если ты напишешь
var a int = 10 / 3, то получишь 3, а не 3.333. Новички часто ждут дробный результат. Помни: целые числа делятся нацело. - Деление на ноль. В математике на ноль делить нельзя, и в Go тоже. Если попробуешь
10 / 0, программа упадёт с ошибкой (panic). Всегда проверяй, что делитель не равен нулю. - Путаница с остатком. Оператор
%работает только с целыми числами. Нельзя написать5.5 % 2— будет ошибка. Остаток — это то, что остаётся после целого деления. - Порядок операций. Как в математике: сначала умножение и деление, потом сложение и вычитание. Если хочешь изменить порядок, используй скобки:
(2 + 3) * 4даст 20, а2 + 3 * 4— 14. - Забыть про переполнение. Если число слишком большое для типа
int, оно "перевернётся" и станет отрицательным. Но для школьных задач это редкость.
Итог
Арифметические операции — это первое, что ты будешь использовать в любой программе. Они простые, как таблица умножения, но без них никуда. В Go они работают почти как в обычной жизни: плюс, минус, умножить, поделить. Главное — помнить про типы данных (целые и дробные) и про то, что деление целых чисел даёт целый результат.
Попробуй сам: напиши программу, которая считает, сколько дней ты прожил (если знаешь свой возраст в годах), или сколько секунд в сутках. Это весело и сразу видно результат. Удачи!