Methods
Ek method ek function hai jiska ek receiver hota hai — function name se pehle ek extra parameter jo use ek specific type se jorta hai. func (r Rectangle) Area() ek regular function jaisa parhta hai, lekin r.Area() ko directly kisi bhi Rectangle value par call kiya ja sakta hai.
package main
import "fmt"
type Rectangle struct {
Width, Height float64
}
func (r Rectangle) Area() float64 {
return r.Width * r.Height
}
func main() {
rect := Rectangle{Width: 10, Height: 5}
fmt.Println("Area:", rect.Area())
}Area: 50
Mutation ke liye pointer receivers
Upar wala value receiver, struct ki ek copy leta hai — method ke andar changes original ko affect nahi karte. Ek pointer receiver, func (c *Counter), iske bajaye actual original value par operate karta hai, jo isi wajah se hai ke ek method waqai apne receiver ki state modify kar sakta hai.
package main
import "fmt"
type Counter struct {
Value int
}
func (c *Counter) Increment() {
c.Value++
}
func main() {
counter := Counter{Value: 0}
counter.Increment()
counter.Increment()
fmt.Println(counter.Value)
}2
Aage: interfaces — Go ka implicit, duck-typed tareeqa shared behavior describe karne ka.
Practice exercise
Ek struct Circle define karein jiska field Radius float64 ho. Ek method Area() float64 add karein jo 3.14159 * c.Radius * c.Radius wapas kare. Radius 2 wala ek Circle banayein, phir circle.Area() print karein.