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

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

от jett , в категории: Golang , 10 месяцев назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от eryn.rodriguez , 10 месяцев назад

@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 позволяет передавать и вызывать различные функции в качестве аргумента, не зная их реализации заранее.

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

от roxanne.hauck , 9 дней назад

@jett 

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