Dereferencing
Dereferentsiya
Agar &v — manzil qog'ozi bo'lsa, *p — o'sha manzilga borib, u yerga yozilganini o'qish.
timeout := 30
p := &timeout // p timeout manzilini ushlab turadi
fmt.Println(*p) // 30
fmt.Println(p == &timeout) // true: bir xil manzilPointer oldidagi * — dereferentsiya operatori: manzilga boring, u yerdagini o'qing. U & qilgan ishni bekor qiladi, sizni manzildan qiymatga qaytaradi.
Bu borib-kelish turlarga ham ta'sir qiladi. p va *p bir xil narsa emas:
| IFODA | QANDAY O'QILADI | TUR |
|---|---|---|
timeout | qiymat | int |
&timeout | timeout'ning manzili | *int |
p | o'sha manzilning nusxasi | *int |
*p | o'sha manzildagi qiymat | int |
p — int'ga pointer. *p — int. Ular bir qadam narida yashaydi, va * ular orasidagi qadamdir.
>_ Exercise
Qayta urinish sikli har bir muvaffaqiyatsiz urinishdan keyin kechikishni ikki baravar oshiradi. Siz joriy kechikishga pointer p ni ushlab turibsiz. U orqali o'qing, qiymatni ikki baravar oshiring va uni chop eting.
- •Sizda faqat
pbor,delayning o'zi emas - •Pointer orqali
*pbilan o'qing - •Qiymatni ikki baravar oshirib, chop eting
Kutilgan natija:
400Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Pointer oldiga * qo'yish manzilga boradi va u yerda saqlangan qiymatni qaytaradi.
NEXT UP
Mutate Through a Pointer
$ go run main.go
Kodingizni ishga tushiring