Math That Makes Sense
Go matematik amallarni siz kutgandek bajaradi, faqat bitta farq bilan: turlarni aralashtirishga yo'l qo'ymaydi.
Go'da barcha arifmetik operatorlar mavjud:
sum := 10 + 3 // 13
diff := 10 - 3 // 7
prod := 10 * 3 // 30
quot := 10 / 3 // 3 (3.33 emas!)
rem := 10 % 3 // 1Kutib turing, 10 / 3 — 3mi? Ha. Ikkala son ham butun son (integer) bo'lganda, Go butun sonli bo'lish (integer division) qiladi. U kasr qismini butunlay tashlab yuboradi. Yaxlitlash yo'q. Shunchaki yo'qoladi.
Haqiqiy javobni xohlaysizmi? Floatlardan foydalaning:
result := 10.0 / 3.0 // 3.3333333333333335Go turlar borasida qattiqqo'l. Bitta ifodada butun son va floatni aralashtira olmaysiz, ularni aniq (explicit) aylantirishingiz kerak:
x := 10
y := 3.0
result := float64(x) / y // 3.3333...Bu boshida bezovta qiluvchidek tuyulishi mumkin, lekin bu xatolarning oldini oladi. Go har doim nimani nazarda tutayotganingizni aniq aytishingizni talab qiladi.
>_ Exercise
Siz kechki ovqat hisobini bo'lishtiryapsiz. Boshlang'ich kod sizga quyidagilarni beradi:
- •
total(float64:95.50) - •
people(int:4)
Har bir kishining ulushini hisoblang va natijani aynan quyidagi formatda chop eting:
Each person pays: $23.88Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Go turlarni hech qachon sukut bo'yicha (silently) aylantirmaydi. Agar int va floatlarni aralashtirmoqchi bo'lsangiz, float64() bilan aniq (explicit) aylantirasiz.
NEXT UP
Making Decisions
$ go run main.go
Kodingizni ishga tushiring