Junior — Middle
Как може да се предаде функция като аргумент за извикване вътре в друга функция?
sobes.tech AI
Отговор от AI
В Go функциите са стойности от първи клас, затова могат да бъдат предавани като аргументи на други функции.
Пример за предаване на функция към друга функция:
package main
import "fmt"
// Функция, която приема друга функция като аргумент
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) // Ще изведе 7
}
Тук applyOperation приема две числа и функция op, която определя операцията върху тези числа. В main подаваме анонимна функция за събиране.
Следователно, за да предадете функция в Go, е достатъчно да посочите типа на аргумента като func(...) ... и да предадете желаната функция при извикване.