Sobes.tech
Junior — Middle

Чӣ фарқият байни усул ва функсия вуҷуд дорад ва хусусиятҳои истифодаи онҳо чӣ гуна мебошанд؟

sobes.tech AI

Ҷавоб аз AI

Дар забони Go, функсия — ин блоки мустақили коди аст, ки бо номи он даъват карда мешавад ва метавонад параметрҳоро қабул кунад ва арзишҳоро баргардонад.

Метод — ин функсияест, ки бо як навъ муайян (масалан, структура) пайваст аст. Метод бо қабулкунанда (receiver) эълон мешавад, ки муайян мекунад, ки ба кадом навъ тааллуқ дорад.

Хусусиятҳои истифода:

  • Метод имкон медиҳад, ки бо маълумоти навъи муайян кор карда шавад, бо истифода аз қабулкунанда дар дохили бадани метод.
  • Методҳо кӯмак мекунанд, ки коди хуб ташкил карда шавад ва рафторҳоро барои навъҳо амалӣ кунанд, ки Go-ро ба услуби объектӣ наздик мекунад.

Масалан:

package main
import "fmt"

type Person struct {
    Name string
}

// Метод бо қабулкунандаи навъи Person
func (p Person) Greet() {
    fmt.Println("Салом, номи ман", p.Name)
}

// Функсияи оддӣ
func Add(a, b int) int {
    return a + b
}

func main() {
    p := Person{Name: "Ivan"}
    p.Greet() // даъвати метод
    fmt.Println(Add(2, 3)) // даъвати функсия
}