Go by Example: Methods

Go struct tiplarida aniqlangan _metod_larni qo’llab-quvvatlaydi.

package main
import "fmt"
type rect struct {
    width, height int
}

Bu area metodi *rect qabul qiluvchi tipiga ega.

func (r *rect) area() int {
    return r.width * r.height
}

Metodlar ko’rsatkichli yoki qiymatli qabul qiluvchi tiplari uchun aniqlanishi mumkin. Mana qiymatli qabul qiluvchi misoli.

func (r rect) perim() int {
    return 2*r.width + 2*r.height
}
func main() {
    r := rect{width: 10, height: 5}

Bu yerda biz struct imiz uchun aniqlangan 2 ta metodni chaqiramiz.

    fmt.Println("area: ", r.area())
    fmt.Println("perim:", r.perim())

Go metod chaqiruvlari uchun qiymatlar va ko’rsatkichlar o’rtasidagi o’tkazishni avtomatik boshqaradi. Metod chaqiruvlarida nusxa olishdan qochish yoki metodga qabul qiluvchi struct ni o’zgartirishga ruxsat berish uchun ko’rsatkichli qabul qiluvchi tipidan foydalanishingiz mumkin.

    rp := &r
    fmt.Println("area: ", rp.area())
    fmt.Println("perim:", rp.perim())
}
$ go run methods.go 
area:  50
perim: 30
area:  50
perim: 30

Keyingi navbatda Go’ning bir-biriga bog’liq metodlar to’plamini guruhlash va nomlash mexanizmini ko’rib chiqamiz: interfeyslar.

Keyingi misol: .