Section 3
3-dars — Konstantalar
const bilan o'zgarmas qiymatlar, const/var farqi va o'zgaruvchilarning ahamiyati
Investitsiya kalkulyatorimizni inflyatsiyani hisobga oladigan qilib kengaytiramiz. Inflyatsiya darajasi dastur davomida o'zgarmaydi — bunday qiymatlar uchun const (konstanta) ishlatamiz.
const nima?
const — bu o'zgarmas ma'lumot konteyneri. var kabi qiymat saqlaydi, lekin undagi qiymatni keyin hech qachon o'zgartirib bo'lmaydi.
package main
import (
"fmt"
"math"
)
func main() {
const inflationRate = 2.5
var investmentAmount float64 = 1000
years := 10.0
expectedReturnRate := 5.5
futureValue := investmentAmount * math.Pow(1+expectedReturnRate/100, years)
futureRealValue := futureValue / math.Pow(1+inflationRate/100, years)
fmt.Println(futureValue)
fmt.Println(futureRealValue)
}Bu yerda yangi qism — futureRealValue: inflyatsiyani hisobga olgan haqiqiy kelajak qiymati. Inflyatsiya pulning qadrini tushiradi, shuning uchun futureValue ni (1 + inflationRate/100) ning yillar darajasiga bo'lamiz.
Agar inflyatsiya kutilgan daromaddan yuqori bo'lsa (masalan
6.5), haqiqiy qiymat boshlang'ich summadan ham past chiqadi — ya'ni pulingiz qadrini yo'qotadi.
Nega const?
const inflationRate = 2.5Ikki sabab:
- Xatodan himoya. Kodda adashib
inflationRate = 7deb o'zgartirmoqchi bo'lsangiz, Go ruxsat bermaydi va xato beradi. Bu — yaxshi narsa. - Maqsadni bildiradi.
constso'zining o'zi o'qiyotgan odamga "bu qiymat o'zgarmaydi" deb aytadi.
Bu dasturda biz oxir-oqibat foydalanuvchidan investitsiya summasi, yillar va daromad foizini so'raymiz — lekin inflyatsiyani o'zgartirishga ruxsat bermaymiz. Shuning uchun u aynan const.
const va var farqi
var | const | |
|---|---|---|
| O'zgartirsa bo'ladimi? | Ha | Yo'q |
:= bilan yoziladimi? | Ha (x := 5) | Yo'q — faqat const x = 5 |
| Boshlang'ich qiymat shartmi? | Yo'q | Ha (keyin o'zgartirib bo'lmagani uchun) |
Qoida: o'zgarmaydigan har qanday qiymatni
constqiling. Bu kodingizni xavfsiz va tushunarli qiladi.
O'zgaruvchilar nega muhim?
Hozir const va var farqi unchalik sezilmaydi, chunki biz qiymatlarni o'zgartirmayapmiz. Asosiy farq: o'zgaruvchining qiymatini keyin qayta o'zgartirish mumkin.
Bu ayniqsa foydalanuvchidan ma'lumot olganda muhim bo'ladi: investmentAmount dastlab biror qiymatga ega bo'ladi, keyin foydalanuvchi kiritgan yangi qiymat bilan qayta yoziladi. Konstantalar bilan bunday qila olmaysiz — shu sabab o'zgaruvchilar dasturlashda asosiy tushuncha. Keyingi darsda aynan shuni — foydalanuvchidan kiritishni — qo'shamiz.
O'zingiz sinab ko'ring
- Kodni ishga tushiring.
inflationRateni6.5ga o'zgartiring —futureRealValueboshlang'ich summadan past tushadimi? mainichidainflationRate = 7deb yozib ko'ring (qiymatini o'zgartirishga urinib). Qanday xato chiqadi?- Yana bitta konstanta qo'shing:
const taxRate = 10va uni biror hisobda ishlating. const x := 5deb yozib ko'ring — nega xato? (constbilan:=ishlamaydi.)