Pointers
Ek pointer ek value ka memory address hold karta hai. & ek variable ka address leta hai, aur * ek pointer ko dereference karta hai us value ko get (ya set) karne ke liye jispar woh point karta hai. Rust ke bar-aks, Go mein koi ownership ya borrowing rules satisfy karne ki zaroorat nahi — pointers bas ek value ko share aur mutate karne ka direct tareeqa hain.
package main
import "fmt"
func main() {
count := 10
pointer := &count
fmt.Println(*pointer)
*pointer = 20
fmt.Println(count)
}10 20
Ek function mein pointer pass karna
Go default tor par arguments ko by value pass karta hai — ek function ko normally apni khud ki copy milti hai. Iske bajaye ek pointer pass karna ek function ko caller ka actual variable modify karne deta hai, jo isi wajah se hai ke neeche double, main mein value ko badal deta hai jabke value khud kabhi wahan reassign nahi hua.
package main
import "fmt"
func double(n *int) {
*n = *n * 2
}
func main() {
value := 21
double(&value)
fmt.Println(value)
}42
Aage: error handling — Go ka explicit if err != nil pattern, exceptions ke bajaye.
Practice exercise
Ek function increment(n *int) likhein jo n jispar point karta hai us value mein 1 add kare. Use ek variable count := 5 ke pointer ke sath call karein, phir count print karein.