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

How Can I Pass Functions as Arguments in Go?

Susan Sarandon
Release: 2024-12-04 12:12:26
Original
278 people have browsed it

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))
}
Copy after login

Running this program will produce the following output:

123
99
Copy after login

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])
Copy after login

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!

source:php.cn
Statement of this Website
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
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template