Sobes.tech
Junior — Middle

Kuidas saab funktsiooni edasi anda argumendina, et seda kutsuda teise funktsiooni sees?

sobes.tech AI

Vastus AI-lt

Go-s funktsioonid on esimese klassi väärtused, seega neid saab edasi anda teistele funktsioonidele argumentidena.

Näide funktsiooni edasiandmisest teisele funktsioonile:

package main

import "fmt"

// Funktsioon, mis võtab teise funktsiooni argumendina
func applyOperation(a, b int, op func(int, int) int) int {
    return op(a, b)
}

func main() {
    sum := func(x, y int) int {
        return x + y
    }

    result := applyOperation(3, 4, sum)
    fmt.Println(result) // Trükib 7
}

Siin võtab applyOperation kaks arvu ja funktsiooni op, mis määratleb nende arvude operatsiooni. main-is anname edasi anonüümse liitmise funktsiooni.

Seega, funktsiooni edasi andmiseks Go-s piisab argumenti tüübi määramisest kui func(...) ... ja soovitud funktsiooni edastamisest kutsumisel.