Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Передача Функцій як Аргументів | Функції
Вступ до Golang

bookПередача Функцій як Аргументів

Ще одна корисна можливість — передача функцій як аргументів до інших функцій.

Нагадаємо, основний синтаксис функції з параметрами виглядає так:

func myFunc(param1 datatype, param2 datatype, ...) optional_return_type {
      // Code
      // Optional return statement
}

Для визначення типу даних параметра при передачі його у функцію використовується наступний синтаксис:

func(datatype, datatype, …) return_datatype

Ключове слово func супроводжується переліком типів даних параметрів цієї функції у дужках, розділених комами. Додатково вказується тип даних, який повертає очікувана функція або набір функцій, якщо це застосовно.

Приклад допоможе краще проілюструвати цю концепцію:

index.go

index.go

copy
12345678910111213141516
package main import "fmt" func nTimes(n int, msg string) { for i := 0; i < n; i++ { fmt.Println(msg) } } func printFiveTimes(msg string, show func(int, string)) { show(5, "Hello World") } func main() { printFiveTimes("HelloWorld", nTimes) }

У наведеному вище прикладі функція з іменем nTimes передається як аргумент до функції printFiveTimes. Тип даних для параметра show у визначенні функції printFiveTimes — це func(int, string), що відповідає визначенню функції nTimes, тобто nTimes(n int, msg string).

Тепер розглянемо приклад функції з повертаємим значенням:

index.go

index.go

copy
1234567891011121314151617181920
package main import "fmt" // A factorial is the product of all the numbers from 1 up till n // For-example factorial of 5 is 1x2x3x4x5, which is 120 func factorial(n int) int { var result int = 1; for i := 2; i <= n; i++ { result *= i } return result } func eval(n int, oper func(int) int) int { return oper(n) } func main() { fmt.Println(eval(5, factorial)) }
question mark

Яким буде вивід наступної програми:

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you show me the example with a return value?

Can you explain how to define a function type with a return value?

What are some common use cases for passing functions as arguments?

bookПередача Функцій як Аргументів

Свайпніть щоб показати меню

Ще одна корисна можливість — передача функцій як аргументів до інших функцій.

Нагадаємо, основний синтаксис функції з параметрами виглядає так:

func myFunc(param1 datatype, param2 datatype, ...) optional_return_type {
      // Code
      // Optional return statement
}

Для визначення типу даних параметра при передачі його у функцію використовується наступний синтаксис:

func(datatype, datatype, …) return_datatype

Ключове слово func супроводжується переліком типів даних параметрів цієї функції у дужках, розділених комами. Додатково вказується тип даних, який повертає очікувана функція або набір функцій, якщо це застосовно.

Приклад допоможе краще проілюструвати цю концепцію:

index.go

index.go

copy
12345678910111213141516
package main import "fmt" func nTimes(n int, msg string) { for i := 0; i < n; i++ { fmt.Println(msg) } } func printFiveTimes(msg string, show func(int, string)) { show(5, "Hello World") } func main() { printFiveTimes("HelloWorld", nTimes) }

У наведеному вище прикладі функція з іменем nTimes передається як аргумент до функції printFiveTimes. Тип даних для параметра show у визначенні функції printFiveTimes — це func(int, string), що відповідає визначенню функції nTimes, тобто nTimes(n int, msg string).

Тепер розглянемо приклад функції з повертаємим значенням:

index.go

index.go

copy
1234567891011121314151617181920
package main import "fmt" // A factorial is the product of all the numbers from 1 up till n // For-example factorial of 5 is 1x2x3x4x5, which is 120 func factorial(n int) int { var result int = 1; for i := 2; i <= n; i++ { result *= i } return result } func eval(n int, oper func(int) int) int { return oper(n) } func main() { fmt.Println(eval(5, factorial)) }
question mark

Яким буде вивід наступної програми:

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 6
some-alt