37 / 103

Pointers

Pointer'lar

Goda pointer'lar bor. Pointer qiymatning xotiradagi manzilini saqlaydi.

*T tipi — T tipidagi qiymatga pointer. Uning nol qiymati nil.

example.go
var p *int

& operatori o'z operandiga pointer hosil qiladi.

example.go
i := 42
p = &i

* operatori pointer ko'rsatib turgan asl qiymatni bildiradi.

example.go
fmt.Println(*p) // i ni p pointer'i orqali o'qiymiz
*p = 21         // i ni p pointer'i orqali o'zgartiramiz

Bu "dereferens qilish" (dereferencing) yoki "bilvosita murojaat" (indirecting) deb ataladi.

C tilidan farqli o'laroq, Goda pointer arifmetikasi yo'q.

Topshiriqlar

Yechimni kodning pastki qismidagi Topshiriqlar bo'limiga yozing, so'ng Submit tugmasini bosing. Mavzu mustahkam o'zlashishi uchun ikkala topshiriqni ham bajaring.

1-topshiriq

almashtir(a, b *int) funksiyasini yozing: pointer'lar orqali *a va *b qiymatlarini almashtirsin. Masalan, x, y := 1, 2 uchun almashtir(&x, &y) dan keyin x == 2, y == 1.

2-topshiriq

ikkiBaravar(p *int) funksiyasini yozing: p ko'rsatib turgan qiymatni ikki baravar oshirsin (*p *= 2). Funksiya hech narsa qaytarmaydi.