Sobes.tech
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(...) ... и да предадете желаната функция при извикване.