Darsliklar Go Lang O'zgaruvchilar

Go Lang Go Lang O'zgaruvchilar

O’zgaruvchi — dasturlashning eng bazaviy tushunchasi. Go’da o’zgaruvchi statik tipizatsiyalangan — turi kompilyatsiya vaqtida qat’iy belgilanadi, ammo buni yozishning ikki qulay usuli bor.

var / :=var nom tur = qiymat — to’liq e’lon. nom := qiymat — qisqa e’lon, tur qiymatdan avtomatik xulosa qilinadi (type inference). Ikkinchisi faqat funksiya ichida ishlaydi.

To’liq e’lon — var

var kalit so’zi bilan o’zgaruvchi turi aniq ko’rsatiladi:

package main

import "fmt"

func main() {
    var ism string = "Master Sherkulov"
    var yosh int = 30

    fmt.Println(ism, yosh)
}
Master Sherkulov 30

var ism stringism nomli, string turidagi o’zgaruvchini e’lon qildi. Bu shakl, ayniqsa, qiymat keyinroq beriladigan yoki tur aniq ko’rsatilishi kerak bo’lgan holatlarda ishlatiladi.

Qisqa e’lon — :=

Funksiya ichida := operatori tur yozishni butunlay tushirib qoldiradi — Go turini qiymatdan o’zi xulosa qiladi:

package main

import "fmt"

func main() {
    ism := "Farrux"
    yosh := 26
    narx := 15000.50

    fmt.Println(ism, yosh, narx)
}
Farrux 26 15000.5

ism := "Farrux"var ism string = "Farrux" bilan bir xil natija beradi, faqat ancha ixcham. Diqqat: := faqat funksiya ichida ishlaydi, paket darajasidagi o’zgaruvchilar albatta var bilan e’lon qilinadi.

Zero value — standart boshlang’ich qiymat

Go’ning muhim xususiyati: qiymat berilmasdan e’lon qilingan o’zgaruvchi hech qachon “aniqlanmagan” holatda bo’lmaydi — u turiga mos standart qiymat (zero value) bilan boshlanadi:

package main

import "fmt"

func main() {
    var son int
    var kasr float64
    var matn string
    var mantiqiy bool

    fmt.Println(son, kasr, matn, mantiqiy)
    fmt.Printf("%q\n", matn)
}
0 0  false
""

int uchun zero value — 0, float64 uchun — 0, string uchun — bo’sh satr ("", %q uni tirnoq bilan ko’rsatdi), bool uchun — false. Bu, masalan, C’dagi “boshlanmagan xotira — axlat qiymat” muammosining oldini butunlay oladi.

Bir nechta o’zgaruvchini birgalikda e’lon qilish

Bir necha o’zgaruvchini bitta qatorda yoki var blokida guruhlab e’lon qilish mumkin:

package main

import "fmt"

func main() {
    a, b, c := 5, 10, 15
    fmt.Println(a + b + c)

    var (
        shahar = "Toshkent"
        aholi  = 3000000
    )
    fmt.Println(shahar, aholi)
}
30
Toshkent 3000000

a, b, c := 5, 10, 15 — uchta o’zgaruvchini bir qatorda e’lon qildi. var (...) bloki esa bir nechta paket yoki funksiya darajasidagi o’zgaruvchini tartibli, qavs ichida guruhlashning odatiy usuli.