Skip to content

Goda funksiyalar

Kirish

Go tilida funksiya — bu takrorlanadigan kod bloklarini guruhlash va chaqirish imkonini beruvchi muhim tushuncha. Funksiyalar kodni modular qilishga va qayta ishlatishga yordam beradi.

Go tilida funksiyalar quyidagicha e'lon qilinadi:

func functionName(parameters) returnType {
    // Funksiya tanasi
    return value
}

Keling, Go tilidagi funksiyalar bilan batafsil tanishamiz!

Oddiy funksiya

Go tilida oddiy funksiya yaratish va chaqirish juda oddiy.

package main

import "fmt"

func hello() {
    fmt.Println("Salom, Go!")
}

func main() {
    hello() // Funksiyani chaqirish
}

Natija:

Salom, Go!

Parametrli funksiya

Funksiyaga argumentlar berish mumkin.

package main

import "fmt"

func greet(name string) {
    fmt.Println("Salom,", name, "!")
}

func main() {
    greet("Ali")
    greet("Vali")
}

Natija:

Salom, Ali!
Salom, Vali!

Qiymatga qaytaruvchi funksiya

Funksiya qiymat qaytarishi mumkin. return operatori yordamida bu amalga oshiriladi.

package main

import "fmt"

func kvadrat(x int) int {
    return x * x
}

func main() {
    natija := kvadrat(5)
    fmt.Println("5 ning kvadrati:", natija)
}

Natija:

5 ning kvadrati: 25

Ikki yoki ko'p qiymat qaytaruvchi funksiya

Go tilida funksiya bir nechta qiymat qaytarishi mumkin.

package main

import "fmt"

func hisobla(a int, b int) (int, int) {
    return a + b, a * b
}

func main() {
    yigindi, kopaytma := hisobla(4, 5)
    fmt.Println("Yig‘indi:", yigindi)
    fmt.Println("Ko‘paytma:", kopaytma)
}

Natija:

Yig‘indi: 9
Ko‘paytma: 20

Anonim (nomsiz) funksiyalar

Anonim funksiyalar bevosita chaqirilishi yoki o‘zgaruvchiga tayinlanishi mumkin.

package main

import "fmt"

func main() {
    kvadrat := func(x int) int {
        return x * x
    }

    fmt.Println("7 ning kvadrati:", kvadrat(7))
}

Natija:

7 ning kvadrati: 49

Variadic funksiya (o'zgaruvchan parametr)

Agar parametrlar soni oldindan noma'lum bo‘lsa, ... sintaksisidan foydalanamiz.

package main

import "fmt"

func yigindi(nums ...int) int {
    sum := 0
    for _, num := range nums {
        sum += num
    }
    return sum
}

func main() {
    fmt.Println("Natija:", yigindi(1, 2, 3, 4, 5))
}

Natija:

Natija: 15

Rekursiv funksiya (o'zini o'zini chaqiruvchi funksiya)

Rekursiya orqali masalan, faktorialni hisoblash mumkin.

package main

import "fmt"

func faktorial(n int) int {
    if n == 0 {
        return 1
    }
    return n * faktorial(n-1)
}

func main() {
    fmt.Println("5! =", faktorial(5))
}

Natija:

5! = 120

Rekursiv funksiyaga misollar:

Sonlar yig'indisini hisoblash

package main

import "fmt"

func sum(n int) int {
    if (n == 0) || (n == 1) {
        return 1
    }
    return n + sum(n - 1)
}

func main(){
    fmt.Println(sum(9))
}

Go tilida funksiyalar quyidagi asosiy turlarga bo‘linadi:

  • Oddiy funksiyalar
  • Parametrli funksiyalar
  • Qiymat qaytaruvchi funksiyalar
  • Ikki yoki ko‘p qiymat qaytaruvchi funksiyalar
  • Anonim funksiyalar
  • Variadic funksiyalar
  • Rekursiv funksiyalar
  • Funksiya pointerlari