Как передать на golang функцию в функцию?

Пользователь

от karen.wisozk , в категории: Golang , 2 года назад

Как передать на golang функцию в функцию?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от camren , 2 года назад

@karen.wisozk 

В Go можно передать функцию как аргумент в другую функцию. Например, если у вас есть функция foo и функция bar, которая принимает в качестве аргумента функцию типа func(), вы можете передать foo в bar следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
func foo() {
    fmt.Println("Hello, world!")
}

func bar(f func()) {
    f()
}

func main() {
    bar(foo)
}


Этот код вызовет функцию bar с аргументом foo, что приведет к выводу "Hello, world!".

Пользователь

от vladimir , 10 месяцев назад

@karen.wisozk 

Кроме того, в Go также можно использовать анонимные функции (или замыкания), чтобы передать функцию внутри функции. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
func someFunction(f func()) {
    // Выполняем какую-то другую логику здесь
    fmt.Println("Doing something...")
    // Вызываем переданную функцию
    f()
}

func main() {
    // Используем анонимную функцию
    someFunction(func() {
        fmt.Println("Hello, world!")
    })
}


В этом примере мы передаем анонимную функцию внутри функции someFunction(). Вызов переданной функции происходит с помощью f(). Результат выполнения программы будет вывод:

1
2
Doing something...
Hello, world!