package main
import "fmt"
// Bu yerda qiymat orqali va ko'rsatkich orqali ishlashni solishtiramiz
// zeroval int parametr qabul qiladi — qiymat nusxasi uzatiladi
func zeroval(ival int) {
ival = 0
}
// zeroptr esa *int (int ko'rsatkich) qabul qiladi
// *iptr — ko'rsatkichni dereferens qilib, manzildagi joriy qiymatni oladi
// Dereferens qilingan ko'rsatkichga qiymat berish — shu manzildagi qiymatni o'zgartiradi
func zeroptr(iptr *int) {
*iptr = 0
}
func main() {
i := 1
fmt.Println("initial:", i)
zeroval(i)
fmt.Println("zeroval:", i)
// &i — i ning xotira manzilini (ko'rsatkichini) beradi
zeroptr(&i)
fmt.Println("zeroptr:", i)
// Ko'rsatkichning o'zini ham chop etish mumkin
fmt.Println("pointer:", &i)
}
zeroval funksiyasi main dagi i ni o'zgartirmaydi, zeroptr esa o'zgartiradi, chunki u o'zgaruvchining xotira manziliga ega.
Terminalda bajarish:
$ go run pointers.go
initial: 1
zeroval: 1
zeroptr: 0
pointer: 0x42131100