Home >Backend Development >Golang >How Can I Pass Functions as Arguments in Go?

How Can I Pass Functions as Arguments in Go?

Susan Sarandon
Susan SarandonOriginal
2024-12-04 12:12:26273browse

How Can I Pass Functions as Arguments in Go?

Passing Functions as Arguments: A Metaprogramming Approach in Golang

As we know, Golang functions are first-class values, eliminating the need for metaprogramming tricks common in dynamic languages. To pass a function as an argument to another function, we can simply utilize Golang's inherent support for function values. Here's an example:

package main

import "fmt"

func someFunction1(a, b int) int {
    return a + b
}

func someFunction2(a, b int) int {
    return a - b
}

func someOtherFunction(a, b int, f func(int, int) int) int {
    return f(a, b)
}

func main() {
    fmt.Println(someOtherFunction(111, 12, someFunction1))
    fmt.Println(someOtherFunction(111, 12, someFunction2))
}

Running this program will produce the following output:

123
99

Now, let's consider a scenario where the selection of the function depends on a run-time-only known value. To handle this, we can create a map that associates function names with their respective function pointers:

m := map[string]func(int, int) int{
    "someFunction1": someFunction1,
    "someFunction2": someFunction2,
}

...

z := someOtherFunction(x, y, m[key])

In this way, we can pass a function as an argument by its name, dynamically selecting the desired function at runtime.

The above is the detailed content of How Can I Pass Functions as Arguments in Go?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn