LevelUpGo
Constants and Zero Values

Constants and Zero Values

Oldingi darsda := — Go'ning qisqa usulini ishlatdingiz. Yana var kalit so'zi ham bor:

example.go
var name string = "Gopher"
var count int

var turini aniq ko'rsatish imkonini beradi. Qiymatni tashlab ketsangiz, masalan var count int, Go unga nol qiymat (zero value) beradi. Aniqlanmagan chiqindi (garbage) bo'lmaydi.

Har bir turning o'z nol qiymati bor:

TURNOL QIYMAT
int0
string""
boolfalse
float640.0

Nega aniq tur belgilash kerak? Ba'zan Go'ning avtomatik aniqlashi sizga kerak bo'lmagan turni tanlaydi. Masalan, := son bilan ishlatilganda doim int beradi, lekin sizga kichikroq tur kerak bo'lishi mumkin:

example.go
var port uint16 = 8080  // uint16, int emas
var ratio float32 = 0.5 // float32, float64 emas

Endi, ba'zi qiymatlar hech qachon o'zgarmasligi kerak. Maksimal urinishlar soni yoki dasturingiz nomini o'ylab ko'ring. Agar kimdir bularni dastur davomida tasodifan qayta belgilasa, narsalar sezilmas tarzda buziladi. const buni kompilyatsiya vaqtida oldini oladi:

example.go
const MaxRetries = 3
const AppName = "LevelUpGo"

MaxRetries = 5 // kompilyatsiya xatosi: MaxRetries ga qiymat berib bo'lmaydi

Agar qiymat kompilyatsiya vaqtida ma'lum bo'lsa va o'zgarmas qolishi kerak bo'lsa, const dan foydalaning. Kompilyator xatolarni kodingiz ishga tushishidan oldin aniqlaydi.

>_ Exercise

var va const ikkalasidan foydalanib, ilova konfiguratsiyasini sozlang.

  • "LevelUpGo" qiymatli AppName konstantasini e'lon qiling
  • 100 qiymatli MaxUsers konstantasini e'lon qiling
  • int turidagi currentUsers o'zgaruvchisini e'lon qiling (qiymat bermang, nol qiymatidan foydalansin)

So'ng aynan quyidagicha chop eting:

example.go
LevelUpGo: 0/100 users

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

  • := dan funksiyalar ichida foydalaning. Bu qisqaroq va Go turini o'zi aniqlaydi.
  • Aniq tur kerak bo'lganda yoki paket darajasida (funksiyadan tashqarida), := ruxsat etilmagan joyda var dan foydalaning.
  • Qiymat hech qachon o'zgarmasligi kerak bo'lganda const dan foydalaning.

NEXT UP

Math That Makes Sense

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Constants and Zero Values

Oldingi darsda := — Go'ning qisqa usulini ishlatdingiz. Yana var kalit so'zi ham bor:

example.go
var name string = "Gopher"
var count int

var turini aniq ko'rsatish imkonini beradi. Qiymatni tashlab ketsangiz, masalan var count int, Go unga nol qiymat (zero value) beradi. Aniqlanmagan chiqindi (garbage) bo'lmaydi.

Har bir turning o'z nol qiymati bor:

TURNOL QIYMAT
int0
string""
boolfalse
float640.0

Nega aniq tur belgilash kerak? Ba'zan Go'ning avtomatik aniqlashi sizga kerak bo'lmagan turni tanlaydi. Masalan, := son bilan ishlatilganda doim int beradi, lekin sizga kichikroq tur kerak bo'lishi mumkin:

example.go
var port uint16 = 8080  // uint16, int emas
var ratio float32 = 0.5 // float32, float64 emas

Endi, ba'zi qiymatlar hech qachon o'zgarmasligi kerak. Maksimal urinishlar soni yoki dasturingiz nomini o'ylab ko'ring. Agar kimdir bularni dastur davomida tasodifan qayta belgilasa, narsalar sezilmas tarzda buziladi. const buni kompilyatsiya vaqtida oldini oladi:

example.go
const MaxRetries = 3
const AppName = "LevelUpGo"

MaxRetries = 5 // kompilyatsiya xatosi: MaxRetries ga qiymat berib bo'lmaydi

Agar qiymat kompilyatsiya vaqtida ma'lum bo'lsa va o'zgarmas qolishi kerak bo'lsa, const dan foydalaning. Kompilyator xatolarni kodingiz ishga tushishidan oldin aniqlaydi.

>_ Exercise

var va const ikkalasidan foydalanib, ilova konfiguratsiyasini sozlang.

  • "LevelUpGo" qiymatli AppName konstantasini e'lon qiling
  • 100 qiymatli MaxUsers konstantasini e'lon qiling
  • int turidagi currentUsers o'zgaruvchisini e'lon qiling (qiymat bermang, nol qiymatidan foydalansin)

So'ng aynan quyidagicha chop eting:

example.go
LevelUpGo: 0/100 users

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

  • := dan funksiyalar ichida foydalaning. Bu qisqaroq va Go turini o'zi aniqlaydi.
  • Aniq tur kerak bo'lganda yoki paket darajasida (funksiyadan tashqarida), := ruxsat etilmagan joyda var dan foydalaning.
  • Qiymat hech qachon o'zgarmasligi kerak bo'lganda const dan foydalaning.

NEXT UP

Math That Makes Sense