В Go функции являются первоклассными объектами. При передаче функции в другую функцию или присвоении ее переменной, передается указатель на эту функцию.
Это означает, что:
- Передается ссылка на существующую функцию, а не ее копия.
- Изменения внутри переданной функции (например, изменение значений замыканий) будут отражены в исходной функции, если она захватывает переменные из внешней области видимости.
- При сравнении двух переменных типа функции, сравниваются их адреса.
Пример передачи функции:
go
Пример использования замыкания:
go