AnyCompiler

Methods

Ek method ek function hai jiska ek receiver hota hai — function name se pehle ek extra parameter jo use ek specific type se jodta hai. func (r Rectangle) Area() ek regular function jaisa padhta 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())
}
Output
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 ki ek method actually 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)
}
Output
2

Aage: interfaces — Go ka implicit, duck-typed tarika shared behavior describe karne ka.

Practice exercise

Ek struct Circle define karo jiska field Radius float64 ho. Ek method Area() float64 add karo jo 3.14159 * c.Radius * c.Radius return kare. Radius 2 wala ek Circle banao, phir circle.Area() print karo.