Sobes.tech
Назад к вопросам
Junior — Middle
74

Каким образом можно передать функцию в качестве аргумента для вызова внутри другой функции?

Компании, где спрашивали
AvitoAvito

Ответ от нейросети

sobes.tech 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(...) ... и передать нужную функцию при вызове.