@jett
В Go можно передавать функции в качестве аргументов других функций и возвращать функции из функций.
Пример передачи функции в функцию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package main import "fmt" func main() { // Передаем функцию addNumbers в качестве аргумента в функцию printSum printSum(addNumbers, 10, 20) } func addNumbers(a, b int) int { return a + b } func printSum(fn func(int, int) int, a, b int) { sum := fn(a, b) fmt.Println("Сумма:", sum) } |
В этом примере функция addNumbers
принимает два аргумента типа int
и возвращает их сумму. Функция printSum
принимает функцию fn
типа func(int, int) int
(принимает два аргумента типа int
и возвращает значение типа int
) и аргументы a
и b
типа int
. Внутри printSum
вызывается переданная функция fn
с аргументами a
и b
, и результат выводится на экран.
Таким образом, функция printSum
позволяет передавать и вызывать различные функции в качестве аргумента, не зная их реализации заранее.