Metodlar

Go struct turlarida metodlar aniqlashni qo'llab-quvvatlaydi.
package main

import "fmt"

type rect struct {
    width, height int
}

// Ushbu area metodi qabul qiluvchi (receiver) sifatida *rect ishlatadi
func (r *rect) area() int {
    return r.width * r.height
}

// Metodlar ko'rsatkich yoki qiymat qabul qiluvchilarga ega bo'lishi mumkin
// Quyida qiymat qabul qiluvchi misoli
func (r rect) perim() int {
    return 2*r.width + 2*r.height
}

func main() {
    r := rect{width: 10, height: 5}

    // struct uchun aniqlangan 2 metodni chaqirish
    fmt.Println("area: ", r.area())
    fmt.Println("perim:", r.perim())

    // Go metod chaqirishda qiymat va ko'rsatkich o'rtasida konvertatsiyani avtomatik bajaradi
    // Ko'rsatkich qabul qiluvchi nusxa ko'chirishdan qochish yoki struct'ni o'zgartirish uchun foydali
    rp := &r
    fmt.Println("area: ", rp.area())
    fmt.Println("perim:", rp.perim())
}

Terminalda bajarish:

$ go run methods.go 
area:  50
perim: 30
area:  50
perim: 30

Keyingi bo'limda metodlar to'plamini guruhlash va nomlash mexanizmi — interface larni ko'rib chiqamiz.