Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Что такое замыкания функций в контексте Go?

Этот вопрос проверяет понимание концепции замыканий, которые позволяют функции обращаться к переменным, находящимся за пределами их области видимости, и использовать их.

Короткий ответ

Замыкание функции — это функция, которая захватывает и использует переменные из окружающего контекста. Эти функции могут сохранять состояние между вызовами.

Длинный ответ

Замыкание — это функция, которая не только выполняет свою основную задачу, но и запоминает значения переменных, находящихся в области видимости, в которой она была определена. Это позволяет функции работать с изменяющимися значениями даже после завершения ее первоначального вызова.

 

Пример:

package main

import "fmt"

func adder() func(int) int {
    sum := 0
    return func(x int) int {
        sum += x
        return sum
    }
}

func main() {
    pos, neg := adder(), adder()
    fmt.Println(pos(5))  // 5
    fmt.Println(neg(-2)) // -2
    fmt.Println(pos(3))  // 8
}

Здесь функция adder возвращает замыкание, которое сохраняет состояние переменной sum. Каждый вызов замыкания обновляет и использует это состояние.

 

В каких случаях использовать:

- Когда требуется сохранять состояние между вызовами функции, например, в счетчиках или генераторах.

- Для создания функции с параметрами, зависящими от внешних значений, но сохраняющими свою логику.

- В ситуациях, когда нужно создавать функцию, которая будет выполнять действия с переменными, изменяющимися с каждым вызовом.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • Golang

Ключевые слова

#closure

#function

#scope

#state

#callback

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.