@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
позволяет передавать и вызывать различные функции в качестве аргумента, не зная их реализации заранее.
@jett
Приведенный вами пример отлично иллюстрирует принцип передачи функции в качестве аргумента в функцию на Golang. Как уже отмечено, возможность передачи функций является мощным инструментом языка Go, который позволяет писать более гибкий и модульный код. В таких случаях функции работают как любые другие значения, которые могут быть переданы или возвращены из других функций.