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.