02 / 68

Variables and Constants

O'zgaruvchilar va konstantalar

Dasturlashda o'zgaruvchi — ma'lumotlarni saqlash uchun ishlatiladigan konteynerdir. Go dasturlash tilida o'zgaruvchini quyidagicha e'lon qilishimiz mumkin:

example.go
var number int

Bu yerda:

  • number — o'zgaruvchining nomi
  • var — o'zgaruvchini e'lon qilish uchun ishlatiladigan kalit so'z
  • int — o'zgaruvchiga biriktirilgan ma'lumot turi

[!NOTE] Go tilida har bir o'zgaruvchi qat'iy ma'lumot turiga ega bo'ladi. Ma'lumot turi o'zgaruvchida qanday turdagi qiymat saqlanishi mumkinligini belgilaydi. Masalan, number o'zgaruvchisi faqat butun sonlarni saqlashi mumkin, chunki uning turi int.


Go o'zgaruvchilariga qiymat berish

O'zgaruvchiga qiymat biriktirishning 3 ta usuli mavjud.

1-usul: Turi bilan birga qiymat berish

example.go
var number int = 10

Bu yerda biz number o'zgaruvchisiga 10 butun son qiymatini biriktirdik.

2-usul: Ma'lumot turini ko'rsatmasdan qiymat berish

example.go
var number = 10

Bu yerda biz o'zgaruvchining ma'lumot turini aniq ko'rsatmayapmiz. Bunday holda, kompilyator o'zgaruvchining qiymatiga qarab uning turini avtomatik aniqlaydi. 10 qiymati butun son bo'lgani sababli, number ning ma'lumot turi int bo'ladi.

3-usul: Qisqartirilgan usul (:= orqali)

example.go
number := 10

Bu yerda biz number o'zgaruvchisiga 10 qiymatini biriktirish uchun := operatoridan foydalandik. Bu o'zgaruvchilarni e'lon qilish va ularga qiymat berishning eng qulay qisqartirilgan usulidir.


Muhim qoidalar

  1. Agar o'zgaruvchiga e'lon qilish paytida hech qanday qiymat berilmasa, unga avtomatik ravishda standart boshlang'ich qiymat (zero value) biriktiriladi. Masalan:
example.go
var count int
fmt.Println(count) // 0 chiqaradi

Bu yerda count o'zgaruvchisi 0 ni chop etadi (int turi uchun boshlang'ich qiymat), chunki biz unga hech qanday qiymat bermaganmiz.

  1. Go tilida har bir o'zgaruvchi aniq bir ma'lumot turiga ega bo'lishi shart (turini yozish orqali yoki berilgan qiymat orqali). Aks holda dastur xatolik beradi:
example.go
// Xatolik: count o'zgaruvchisining turi ham, boshlang'ich qiymati ham yo'q
var count

// To'g'ri: count1 int turiga ega
var count1 int

// To'g'ri: count2 int turiga ega (qiymatdan aniqlanadi)
var count2 = 10

Misol: Go o'zgaruvchilari

Quyidagi misolda uchala usuldan foydalanish ko'rsatilgan:

example.go
package main

import "fmt"

func main() {
    // ma'lumot turini aniq ko'rsatgan holda e'lon qilish
    var number1 int = 10
    fmt.Println(number1)

    // ma'lumot turini ko'rsatmasdan qiymat biriktirish
    var number2 = 20
    fmt.Println(number2)

    // o'zgaruvchini e'lon qilishning qisqartirilgan usuli
    number3 := 30
    fmt.Println(number3)
}
example.go
package main

import "fmt"

func main() {
    // ma'lumot turini aniq ko'rsatgan holda e'lon qilish
    var number1 int = 10
    fmt.Println(number1)

    // ma'lumot turini ko'rsatmasdan qiymat biriktirish
    var number2 = 20
    fmt.Println(number2)

    // o'zgaruvchini e'lon qilishning qisqartirilgan usuli
    number3 := 30
    fmt.Println(number3)
}

Natija:

matn
10
20
30

O'zgaruvchi qiymatini o'zgartirish

O'zgaruvchi nomi aytib turganidek, biz o'zgaruvchida saqlangan qiymatni dastur davomida o'zgartirishimiz mumkin. Masalan:

example.go
// boshlang'ich qiymat
number := 10
fmt.Println("Boshlang'ich qiymat:", number) // 10 chiqaradi

// o'zgaruvchi qiymatini o'zgartirish
number = 100
fmt.Println("O'zgartirilgan qiymat:", number) // 100 chiqaradi

Dastlab o'zgaruvchida 10 saqlangan edi. So'ngra uning qiymati 100 ga o'zgartirildi.

[!WARNING] Go tilida o'zgaruvchi bir marta e'lon qilingandan so'ng, uning ma'lumot turini o'zgartirib bo'lmaydi.

Yuqoridagi misolda number o'zgaruvchisi faqat butun sonlarni saqlashi mumkin. Unga boshqa turdagi ma'lumotni berish sintaktik xatolikka olib keladi:

example.go
number := 10

// Xatolik: string ma'lumot turini int turidagi o'zgaruvchiga berib bo'lmaydi
number = "Hello"

Bir vaqtning o'zida bir nechta o'zgaruvchi yaratish

Go tilida vergul bilan ajratgan holda bir vaqtning o'zida bir nechta o'zgaruvchilarni e'lon qilish mumkin. Masalan:

example.go
var name, age = "Palistha", 22

Bu yerda "Palistha" qiymati name o'zgaruvchisiga, 22 esa age o'zgaruvchisiga biriktiriladi.

Xuddi shu kodni qisqartirilgan usulda ham yozish mumkin:

example.go
name, age := "Palistha", 22

Go o'zgaruvchilarini nomlash qoidalari

  • O'zgaruvchi nomi harflar, raqamlar va pastki chiziqdan (_) iborat bo'lishi mumkin.
  • O'zgaruvchi nomlarida boshqa maxsus belgilar ($, @, # va h.k.) ishlatilishi mumkin emas.
  • O'zgaruvchi nomi raqam bilan boshlanishi mumkin emas.
  • O'zgaruvchi nomi Go tilining kalit so'zlari (masalan, int, type, for, var va h.k.) bilan bir xil bo'lishi mumkin emas.

Dasturlashda doimo mazmunli va tushunarli nomlar tanlash tavsiya etiladi. Bu sizning kodingizni o'qish va tushunishni ancha osonlashtiradi.

Yaroqsiz o'zgaruvchi (Illegal Variable)Yomon o'zgaruvchi (Bad Variable)Yaxshi o'zgaruvchi (Good Variable)
1aaage
s@larysalsalary
first namefnfirstName
annual-incomeannIncannualIncome

Go tilida konstantalar (Constants)

Konstantalar — e'lon qilingandan so'ng dastur davomida qiymatini o'zgartirib bo'lmaydigan o'zgarmas qiymatlardir. Go tilida konstantalarni yaratish uchun const kalit so'zidan foydalanamiz:

example.go
const lightSpeed = 299792458 // boshlang'ich qiymat

// Xatolik! Konstantalar qiymatini o'zgartirib bo'lmaydi
lightSpeed = 299792460

[!NOTE] Konstantalarni e'lon qilishda := qisqartirilgan belgisidan foydalanib bo'lmaydi.

example.go
// Xatolik keltirib chiqaradigan kod:
const lightSpeed := 299792458